Bring in Olaf's CET character set transformation work.
authorrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Mon, 29 Aug 2005 00:34:07 +0000 (00:34 +0000)
committerrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Mon, 29 Aug 2005 00:34:07 +0000 (00:34 +0000)
186 files changed:
gpsbabel/Makefile
gpsbabel/README
gpsbabel/an1.c
gpsbabel/bcr.c
gpsbabel/brauniger_iq.c
gpsbabel/cet.c [new file with mode: 0644]
gpsbabel/cet.h [new file with mode: 0644]
gpsbabel/cet/ansi_x3_4_1968.h [new file with mode: 0644]
gpsbabel/cet/atarist.h [new file with mode: 0644]
gpsbabel/cet/baltic.h [new file with mode: 0644]
gpsbabel/cet/bs_4730.h [new file with mode: 0644]
gpsbabel/cet/bs_viewdata.h [new file with mode: 0644]
gpsbabel/cet/cp1250.h [new file with mode: 0644]
gpsbabel/cet/cp1251.h [new file with mode: 0644]
gpsbabel/cet/cp1252.h [new file with mode: 0644]
gpsbabel/cet/cp1253.h [new file with mode: 0644]
gpsbabel/cet/cp1254.h [new file with mode: 0644]
gpsbabel/cet/cp1255.h [new file with mode: 0644]
gpsbabel/cet/cp1256.h [new file with mode: 0644]
gpsbabel/cet/cp1257.h [new file with mode: 0644]
gpsbabel/cet/csa_z243_4_1985_1.h [new file with mode: 0644]
gpsbabel/cet/csa_z243_4_1985_2.h [new file with mode: 0644]
gpsbabel/cet/csa_z243_4_1985_gr.h [new file with mode: 0644]
gpsbabel/cet/csn_369103.h [new file with mode: 0644]
gpsbabel/cet/cwi.h [new file with mode: 0644]
gpsbabel/cet/dec_mcs.h [new file with mode: 0644]
gpsbabel/cet/din_66003.h [new file with mode: 0644]
gpsbabel/cet/ds_2089.h [new file with mode: 0644]
gpsbabel/cet/ecma_cyrillic.h [new file with mode: 0644]
gpsbabel/cet/es.h [new file with mode: 0644]
gpsbabel/cet/es2.h [new file with mode: 0644]
gpsbabel/cet/gb_1988_80.h [new file with mode: 0644]
gpsbabel/cet/gost_19768_87.h [new file with mode: 0644]
gpsbabel/cet/hp_roman8.h [new file with mode: 0644]
gpsbabel/cet/ibm037.h [new file with mode: 0644]
gpsbabel/cet/ibm1004.h [new file with mode: 0644]
gpsbabel/cet/ibm1026.h [new file with mode: 0644]
gpsbabel/cet/ibm1047.h [new file with mode: 0644]
gpsbabel/cet/ibm256.h [new file with mode: 0644]
gpsbabel/cet/ibm273.h [new file with mode: 0644]
gpsbabel/cet/ibm277.h [new file with mode: 0644]
gpsbabel/cet/ibm278.h [new file with mode: 0644]
gpsbabel/cet/ibm280.h [new file with mode: 0644]
gpsbabel/cet/ibm284.h [new file with mode: 0644]
gpsbabel/cet/ibm285.h [new file with mode: 0644]
gpsbabel/cet/ibm297.h [new file with mode: 0644]
gpsbabel/cet/ibm437.h [new file with mode: 0644]
gpsbabel/cet/ibm500.h [new file with mode: 0644]
gpsbabel/cet/ibm850.h [new file with mode: 0644]
gpsbabel/cet/ibm851.h [new file with mode: 0644]
gpsbabel/cet/ibm852.h [new file with mode: 0644]
gpsbabel/cet/ibm855.h [new file with mode: 0644]
gpsbabel/cet/ibm857.h [new file with mode: 0644]
gpsbabel/cet/ibm860.h [new file with mode: 0644]
gpsbabel/cet/ibm861.h [new file with mode: 0644]
gpsbabel/cet/ibm862.h [new file with mode: 0644]
gpsbabel/cet/ibm863.h [new file with mode: 0644]
gpsbabel/cet/ibm864.h [new file with mode: 0644]
gpsbabel/cet/ibm865.h [new file with mode: 0644]
gpsbabel/cet/ibm868.h [new file with mode: 0644]
gpsbabel/cet/ibm869.h [new file with mode: 0644]
gpsbabel/cet/ibm871.h [new file with mode: 0644]
gpsbabel/cet/ibm891.h [new file with mode: 0644]
gpsbabel/cet/ibm903.h [new file with mode: 0644]
gpsbabel/cet/ibm904.h [new file with mode: 0644]
gpsbabel/cet/iec_p27_1.h [new file with mode: 0644]
gpsbabel/cet/iso_10367_box.h [new file with mode: 0644]
gpsbabel/cet/iso_5427.h [new file with mode: 0644]
gpsbabel/cet/iso_646_irv.h [new file with mode: 0644]
gpsbabel/cet/iso_6937_2_25.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_1.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_10.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_13.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_14.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_15.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_2.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_3.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_4.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_5.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_6.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_7.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_8.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_9.h [new file with mode: 0644]
gpsbabel/cet/iso_8859_supp.h [new file with mode: 0644]
gpsbabel/cet/it.h [new file with mode: 0644]
gpsbabel/cet/jis_c6220_1969_ro.h [new file with mode: 0644]
gpsbabel/cet/jis_x0201.h [new file with mode: 0644]
gpsbabel/cet/jus_i_b1_002.h [new file with mode: 0644]
gpsbabel/cet/jus_i_b1_003_mac.h [new file with mode: 0644]
gpsbabel/cet/jus_i_b1_003_serb.h [new file with mode: 0644]
gpsbabel/cet/keybcs2.h [new file with mode: 0644]
gpsbabel/cet/koi8_r.h [new file with mode: 0644]
gpsbabel/cet/koi8_ru.h [new file with mode: 0644]
gpsbabel/cet/koi8_u.h [new file with mode: 0644]
gpsbabel/cet/koi_7.h [new file with mode: 0644]
gpsbabel/cet/koi_8.h [new file with mode: 0644]
gpsbabel/cet/koi_8_cs2.h [new file with mode: 0644]
gpsbabel/cet/ksc5636.h [new file with mode: 0644]
gpsbabel/cet/latin_greek_1.h [new file with mode: 0644]
gpsbabel/cet/mac_is.h [new file with mode: 0644]
gpsbabel/cet/macintosh.h [new file with mode: 0644]
gpsbabel/cet/macintosh_ce.h [new file with mode: 0644]
gpsbabel/cet/msz_7795_3.h [new file with mode: 0644]
gpsbabel/cet/nats_dano.h [new file with mode: 0644]
gpsbabel/cet/nats_sefi.h [new file with mode: 0644]
gpsbabel/cet/nc_nc00_10.h [new file with mode: 0644]
gpsbabel/cet/nextstep.h [new file with mode: 0644]
gpsbabel/cet/nf_z_62_010.h [new file with mode: 0644]
gpsbabel/cet/nf_z_62_010__1973_.h [new file with mode: 0644]
gpsbabel/cet/ns_4551_1.h [new file with mode: 0644]
gpsbabel/cet/ns_4551_2.h [new file with mode: 0644]
gpsbabel/cet/pt.h [new file with mode: 0644]
gpsbabel/cet/pt2.h [new file with mode: 0644]
gpsbabel/cet/sami.h [new file with mode: 0644]
gpsbabel/cet/sen_850200_b.h [new file with mode: 0644]
gpsbabel/cet/sen_850200_c.h [new file with mode: 0644]
gpsbabel/cet/tcvn.h [new file with mode: 0644]
gpsbabel/cet/viscii.h [new file with mode: 0644]
gpsbabel/cet/vps.h [new file with mode: 0644]
gpsbabel/cet_util.c [new file with mode: 0644]
gpsbabel/cet_util.h [new file with mode: 0644]
gpsbabel/cetus.c
gpsbabel/coastexp.c
gpsbabel/copilot.c
gpsbabel/csv_util.c
gpsbabel/defs.h
gpsbabel/delgpl.c
gpsbabel/easygps.c
gpsbabel/garmin.c
gpsbabel/gcdb.c
gpsbabel/gdb.c
gpsbabel/geo.c
gpsbabel/geoniche.c
gpsbabel/glogbook.c
gpsbabel/google.c
gpsbabel/gpilots.c
gpsbabel/gpspilot.c
gpsbabel/gpsutil.c
gpsbabel/gpx.c
gpsbabel/hiketech.c
gpsbabel/holux.c
gpsbabel/hsa_ndv.c
gpsbabel/html.c
gpsbabel/igc.c
gpsbabel/kml.c
gpsbabel/lowranceusr.c
gpsbabel/maggeo.c
gpsbabel/magnav.c
gpsbabel/magproto.c
gpsbabel/main.c
gpsbabel/mapsend.c
gpsbabel/mapsource.c
gpsbabel/navicache.c
gpsbabel/netstumbler.c
gpsbabel/nmea.c
gpsbabel/overlay.c
gpsbabel/ozi.c
gpsbabel/palmdoc.c
gpsbabel/pathaway.c
gpsbabel/pcx.c
gpsbabel/psitrex.c
gpsbabel/psp.c
gpsbabel/quovadis.c
gpsbabel/reference/cet/cet-sample.cp1250.txt [new file with mode: 0644]
gpsbabel/reference/cet/cet-sample.gdb [new file with mode: 0644]
gpsbabel/reference/cet/cet-sample.gpx [new file with mode: 0644]
gpsbabel/reference/cet/cet-sample.latin1.txt [new file with mode: 0644]
gpsbabel/reference/cet/cet-sample.latin2.txt [new file with mode: 0644]
gpsbabel/reference/cet/cet-sample.macroman.txt [new file with mode: 0644]
gpsbabel/reference/route/tef_xml.sample.gpx
gpsbabel/route.c
gpsbabel/saroute.c
gpsbabel/shape.c
gpsbabel/tef_xml.c
gpsbabel/testo
gpsbabel/text.c
gpsbabel/tiger.c
gpsbabel/tmpro.c
gpsbabel/tomtom.c
gpsbabel/tpg.c
gpsbabel/util.c
gpsbabel/vcf.c
gpsbabel/vitosmt.c
gpsbabel/waypt.c
gpsbabel/xcsv.c
gpsbabel/xmlgeneric.c

index c181d7ec288eeb7fa2c628e1939b5d41a8011c3d..f3fac011f752389efccbb259872e71c311f8f36f 100644 (file)
@@ -58,7 +58,7 @@ SHAPE=shapelib/shpopen.o shapelib/dbfopen.o
 
 LIBOBJS = queue.o route.o waypt.o filter_vecs.o util.o vecs.o mkshort.o \
           csv_util.o strptime.o grtcirc.o vmem.o util_crc.o xmlgeneric.o \
-          uuid.o formspec.o xmltag.o \
+          uuid.o formspec.o xmltag.o cet.o cet_util.o \
        $(COLDSYNC) $(GARMIN) $(JEEPS) $(SHAPE) $(FMTS) $(FILTERS)
 OBJS = main.o $(LIBOBJS)
 
@@ -153,7 +153,7 @@ brauniger_iq.o: brauniger_iq.c defs.h queue.h gbtypes.h jeeps/gpsserial.h \
   jeeps/gpsnmea.h jeeps/gpsmem.h jeeps/gpsrqst.h jeeps/gpsinput.h \
   jeeps/gpsproj.h jeeps/gpsnmeafmt.h jeeps/gpsnmeaget.h
 cetus.o: cetus.c defs.h queue.h gbtypes.h coldsync/palm.h coldsync/pdb.h
-coastexp.o: coastexp.c defs.h queue.h gbtypes.h xmlgeneric.h uuid.h
+coastexp.o: coastexp.c defs.h queue.h gbtypes.h xmlgeneric.h uuid.h cet_util.h
 copilot.o: copilot.c defs.h queue.h gbtypes.h coldsync/palm.h \
   coldsync/pdb.h
 coto.o: coto.c defs.h queue.h gbtypes.h csv_util.h coldsync/palm.h \
@@ -190,11 +190,11 @@ gpilots.o: gpilots.c defs.h queue.h gbtypes.h coldsync/palm.h \
 gpspilot.o: gpspilot.c defs.h queue.h gbtypes.h coldsync/palm.h \
   coldsync/pdb.h
 gpsutil.o: gpsutil.c defs.h queue.h gbtypes.h magellan.h
-gpx.o: gpx.c defs.h queue.h gbtypes.h xmlgeneric.h
+gpx.o: gpx.c defs.h queue.h gbtypes.h xmlgeneric.h cet_util.h
 grtcirc.o: grtcirc.c defs.h queue.h gbtypes.h
 hiketech.o: hiketech.c defs.h queue.h gbtypes.h xmlgeneric.h
 holux.o: holux.c defs.h queue.h gbtypes.h holux.h
-hsa_ndv.o: hsa_ndv.c defs.h queue.h gbtypes.h
+hsa_ndv.o: hsa_ndv.c defs.h queue.h gbtypes.h cet_util.h
 html.o: html.c defs.h queue.h gbtypes.h jeeps/gpsmath.h jeeps/gps.h \
   jeeps/../defs.h jeeps/gpsport.h jeeps/gpsserial.h jeeps/gpssend.h \
   jeeps/gpsread.h jeeps/gpsutil.h jeeps/gpsapp.h jeeps/gpsprot.h \
@@ -213,7 +213,7 @@ main.o: main.c defs.h queue.h gbtypes.h
 mapsend.o: mapsend.c defs.h queue.h gbtypes.h mapsend.h magellan.h
 mapsource.o: mapsource.c defs.h queue.h gbtypes.h garmin_tables.h
 mkshort.o: mkshort.c defs.h queue.h gbtypes.h
-navicache.o: navicache.c defs.h queue.h gbtypes.h
+navicache.o: navicache.c defs.h queue.h gbtypes.h cet_util.h
 netstumbler.o: netstumbler.c defs.h queue.h gbtypes.h csv_util.h
 nmea.o: nmea.c defs.h queue.h gbtypes.h
 overlay.o: overlay.c defs.h queue.h gbtypes.h grtcirc.h
@@ -230,7 +230,7 @@ pcx.o: pcx.c defs.h queue.h gbtypes.h garmin_tables.h
 polygon.o: polygon.c defs.h queue.h gbtypes.h
 position.o: position.c defs.h queue.h gbtypes.h grtcirc.h
 psitrex.o: psitrex.c defs.h queue.h gbtypes.h garmin_tables.h
-psp.o: psp.c defs.h queue.h gbtypes.h
+psp.o: psp.c defs.h queue.h gbtypes.h cet_util.h
 queue.o: queue.c queue.h
 quovadis.o: quovadis.c quovadis.h defs.h queue.h gbtypes.h \
   coldsync/palm.h coldsync/pdb.h
@@ -273,8 +273,37 @@ vitosmt.o: vitosmt.c defs.h queue.h gbtypes.h
 vmem.o: vmem.c defs.h queue.h gbtypes.h
 waypt.o: waypt.c defs.h queue.h gbtypes.h
 xcsv.o: xcsv.c defs.h queue.h gbtypes.h csv_util.h
-xmlgeneric.o: xmlgeneric.c defs.h queue.h gbtypes.h xmlgeneric.h
-xmltag.o: xmltag.c defs.h queue.h gbtypes.h
+xmlgeneric.o: xmlgeneric.c defs.h queue.h gbtypes.h cet_util.h xmlgeneric.h
+cet.o: cet.h cet.c defs.h
+cet_util.o: cet_util.h cet_util.c cet.h defs.h \
+    cet/ansi_x3_4_1968.h cet/atarist.h cet/baltic.h cet/bs_4730.h \
+    cet/bs_viewdata.h cet/cp1250.h cet/cp1251.h cet/cp1252.h \
+    cet/cp1253.h cet/cp1254.h cet/cp1255.h cet/cp1256.h \
+    cet/cp1257.h cet/csa_z243_4_1985_1.h cet/csa_z243_4_1985_2.h cet/csa_z243_4_1985_gr.h \
+    cet/csn_369103.h cet/cwi.h cet/dec_mcs.h cet/din_66003.h \
+    cet/ds_2089.h cet/ecma_cyrillic.h cet/es.h cet/es2.h \
+    cet/gb_1988_80.h cet/gost_19768_87.h cet/hp_roman8.h cet/ibm037.h \
+    cet/ibm1004.h cet/ibm1026.h cet/ibm1047.h cet/ibm256.h \
+    cet/ibm273.h cet/ibm277.h cet/ibm278.h cet/ibm280.h \
+    cet/ibm284.h cet/ibm285.h cet/ibm297.h cet/ibm437.h \
+    cet/ibm500.h cet/ibm850.h cet/ibm851.h cet/ibm852.h \
+    cet/ibm855.h cet/ibm857.h cet/ibm860.h cet/ibm861.h \
+    cet/ibm862.h cet/ibm863.h cet/ibm864.h cet/ibm865.h \
+    cet/ibm868.h cet/ibm869.h cet/ibm871.h cet/ibm891.h \
+    cet/ibm903.h cet/ibm904.h cet/iec_p27_1.h cet/iso_10367_box.h \
+    cet/iso_5427.h cet/iso_646_irv.h cet/iso_6937_2_25.h cet/iso_8859_1.h \
+    cet/iso_8859_10.h cet/iso_8859_13.h cet/iso_8859_14.h cet/iso_8859_15.h \
+    cet/iso_8859_2.h cet/iso_8859_3.h cet/iso_8859_4.h cet/iso_8859_5.h \
+    cet/iso_8859_6.h cet/iso_8859_7.h cet/iso_8859_8.h cet/iso_8859_9.h \
+    cet/iso_8859_supp.h cet/it.h cet/jis_c6220_1969_ro.h cet/jis_x0201.h \
+    cet/jus_i_b1_002.h cet/jus_i_b1_003_mac.h cet/jus_i_b1_003_serb.h cet/keybcs2.h \
+    cet/koi8_r.h cet/koi8_ru.h cet/koi8_u.h cet/koi_7.h \
+    cet/koi_8.h cet/koi_8_cs2.h cet/ksc5636.h cet/latin_greek_1.h \
+    cet/mac_is.h cet/macintosh.h cet/macintosh_ce.h cet/msz_7795_3.h \
+    cet/nats_dano.h cet/nats_sefi.h cet/nc_nc00_10.h cet/nextstep.h \
+    cet/nf_z_62_010.h cet/nf_z_62_010__1973_.h cet/ns_4551_1.h cet/ns_4551_2.h \
+    cet/pt.h cet/pt2.h cet/sami.h cet/sen_850200_b.h \
+    cet/sen_850200_c.h cet/tcvn.h cet/viscii.h cet/vps.h
 coldsync/pdb.o: coldsync/pdb.c coldsync/config.h coldsync/palm.h \
   coldsync/pdb.h
 coldsync/util.o: coldsync/util.c coldsync/config.h coldsync/pconn/util.h \
index d858f61bccd1ba2036b35fa0448fde453df17d30..a1145174283099483ef1509c13f0b3ddc592b17a 100644 (file)
@@ -75,6 +75,7 @@ COMMON USAGE
        gpsbabel -s -i geo -f geocaching.loc -o magellan -F /dev/ttyS0 
        gpsbabel -s -i geo -f geocaching.loc -o magellan -F com1
 
+
 ADVANCED USAGE
 
        Argument are processed in the order they appear on the command line
@@ -102,6 +103,17 @@ ADVANCED USAGE
        You can write the same data in different output formats:
 
        gpsbabel -i geo -f 1.loc -o gpx -F 1.gpx -o pcx 1.wpt
+       
+       If you want to change the character set of input or/and output
+       side you can do this with the option -c <character set>. You can get
+       a complete list of supported character sets with "gpsbabel -l".
+       To change the character set on both sides you should do this:
+       
+       gpsbabel -i xcsv,style=foo.style -c latin1 -f foo 
+                -o xcsv,style=bar.style -c ms-ansi -F bar
+                
+       Note, that some formats has a fixed character set and ignore this option.
+       
 
 ROUTE AND TRACK MODES
 
index 0b72ce59c21652190cd2d070f2b099e6bcb75611..1c8983fd9f2fa769920461314600ea9eb89e94e7 100644 (file)
@@ -846,5 +846,6 @@ ff_vecs_t an1_vecs = {
        my_read,
        my_write,
        NULL, 
-       an1_args
+       an1_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 29bde2fa782b5bbe2aba033f35bf61b441ca729e..e1e26a9c3bd4dc4ade5ab4d5547b9486f3521bfc 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
-
+#include "cet_util.h"
 
 #define MYNAME "bcr"
 
-#define BCR_DEBUG
-// #undef  BCR_DEBUG
+#undef BCR_DEBUG
     
 #define SEC_UNKNOWN    0
 #define SEC_CLIENT     1
@@ -243,7 +242,7 @@ bcr_data_read(void)
            }
            if (src != NULL) xfree(src);
            
-           src = str_iso8859_1_to_utf8(buff);
+           src = xstrdup(buff);
            /* !! buff is now free and can be used */
            
            c = bcr_next_char(src);             /* skip spaces */
@@ -378,10 +377,14 @@ void bcr_write_line(FILE *fout, const char *key, int *index, const char *value)
        }
        else
        {
+           char *tmp;
+           
+           tmp = (value != NULL) ? xstrdup(value) : xstrdup("");
            if (index != NULL)
-               fprintf(fout, "%s%d=%s\x0d\n", key, *index, value);
+               fprintf(fout, "%s%d=%s\x0d\n", key, *index, tmp);
            else
-               fprintf(fout, "%s=%s\x0d\n", key, value);
+               fprintf(fout, "%s=%s\x0d\n", key, tmp);
+           xfree(tmp);
        }
 }
 
@@ -499,6 +502,6 @@ ff_vecs_t bcr_vecs = {
        bcr_data_read,
        bcr_data_write,
        NULL,
-       bcr_args
+       bcr_args,
+       CET_CHARSET_MS_ANSI, 0  /* CET-REVIEW */
 };
-
index e42d820c24af938527b72e6af0b12f0219281a21..42647bff7d9b7db96e8bbbc9c89219f86b640343 100644 (file)
@@ -276,5 +276,6 @@ ff_vecs_t brauniger_iq_vecs = {
     data_read,
     NULL,
     NULL, 
-    brauniger_iq_args
+    brauniger_iq_args,
+    CET_CHARSET_UTF8, 1                /* master process: don't convert anything | CET-REVIEW */
 };
diff --git a/gpsbabel/cet.c b/gpsbabel/cet.c
new file mode 100644 (file)
index 0000000..a08febf
--- /dev/null
@@ -0,0 +1,360 @@
+/*
+
+    Character encoding transformation - basics
+
+    Copyright (C) 2005 Olaf Klein, o.b.klein@t-online.de
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+*/
+
+#include "defs.h"
+#include "cet.h"
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* ! ALL vec PARAMETERS HAVE TO BE A VALID POINTER TO A cet_cs_vec_t RECORD  ! */
+/* =========================================================================== */
+/* %%%            single character or value transmission                   %%% */
+/* --------------------------------------------------------------------------- */
+
+/* %%% cet_char_to_ucs4 %%%
+ *
+ * single character to UCS-4 code %%% 
+ * return values: 0 if convertable character, otherwise 1
+ */
+int
+cet_char_to_ucs4(const char src, const cet_cs_vec_t *vec, int *value)
+{
+       int trash, c;
+       int *dest;
+
+       c = ((unsigned char)src & 0xFF);
+       dest = (value != NULL) ? value : &trash;
+       
+       *dest = c;
+       c -= vec->ucs4_offset;
+
+       if (c < 0) return CET_SUCESS;
+       else if ((c >= vec->ucs4_count) || (vec->ucs4_map[c] == -1)) return CET_ERROR;
+       else 
+       {
+           *dest = vec->ucs4_map[c];
+           return CET_SUCESS;
+       }
+}
+
+/* %%% cet_ucs4_to_utf8 %%%
+ *
+ * convert single UCS-4 value into UTF-8 sequence 
+ *
+ * return values: >= 0: length of produced UTF-8 sequence
+ *                 < 0: -bytes more needed in target space
+ */
+
+int
+cet_ucs4_to_utf8(char *dest, size_t dest_size, int value)
+{
+       int result;
+       char trash[16];
+       unsigned char *c;
+       
+       c = (dest != NULL) ? dest : trash;
+
+       if ((value & 0xffffff80) == 0)                  /* <= 7 bits */
+       {
+           if (dest_size < 1) return (dest_size - 1);
+           *c++ = value;
+           result = 1;
+       }
+       else if ((value & 0xfffff800) == 0)             /* <= 11 bits */
+       {
+           if (dest_size < 2) return (dest_size - 2);
+           *c++ = (0xc0 | (value >> 6));
+           *c++ = (0x80 | (value & 0x3f));
+           result = 2;
+
+       }
+       else if ((value & 0xffff0000) == 0)             /* <= 16 bits */
+       {
+           if (dest_size < 3) return (dest_size - 3);
+           *c++ = (0xe0 |  (value >> 12));
+           *c++ = (0x80 | ((value >> 6) & 0x3f));
+           *c++ = (0x80 |  (value & 0x3f));
+           result = 3;
+       }
+       else if ((value & 0xffe00000) == 0)             /* <= 21 bits */
+       {
+           if (dest_size < 4) return (dest_size - 4);
+           *c++ = (0xf0 |  (value >> 18));
+           *c++ = (0x80 | ((value >> 12) & 0x3f));
+           *c++ = (0x80 | ((value >> 6) & 0x3f));
+           *c++ = (0x80 |  (value & 0x3f));
+           result = 4;
+       }
+       else if ((value & 0xfc000000) == 0)             /* <= 26 bits */
+       {
+           if (dest_size < 5) return (dest_size - 5);
+           *c++ = (0xf8 |  (value >> 24));
+           *c++ = (0x80 | ((value >> 18) & 0x3f));
+           *c++ = (0x80 | ((value >> 12) & 0x3f));
+           *c++ = (0x80 | ((value >> 6) & 0x3f));
+           *c++ = (0x80 |  (value & 0x3f));
+           result = 5;
+       }
+       else if ((value & 0x80000000) == 0)             /* <= 31 bits */
+       {
+           if (dest_size < 6) return (dest_size - 6);
+           *c++ = (0xfc |  (value >> 30));
+           *c++ = (0x80 | ((value >> 24) & 0x3f));
+           *c++ = (0x80 | ((value >> 18) & 0x3f));
+           *c++ = (0x80 | ((value >> 12) & 0x3f));
+           *c++ = (0x80 | ((value >> 6) & 0x3f));
+           *c++ = (0x80 |  (value & 0x3f));
+           result = 6;
+       }
+       else
+       {
+           return 0;                           /* Value = -1 */
+       }
+       return result;
+}
+
+/* %%% cet_utf8_to_ucs4 %%% 
+ *
+ * decode single UTF-8 sequence into UCS-4 value
+ *
+ * return values: 0 if success, otherwise 1
+ */
+int
+cet_utf8_to_ucs4(const char *str, int *bytes, int *value)
+{
+       unsigned char *cp = (unsigned char *)str;
+       
+       if (*cp < 0x80)
+       {
+           if (bytes != NULL) *bytes = 1;
+           if (value != NULL) *value = *cp;
+           return CET_SUCESS;
+       }
+       else
+       {
+           unsigned char bits = 0xc0;
+           unsigned char mask = 0xe0;
+           int len = 0;
+           
+           for (len = 1; len <= 6; len++)                      /* outer loop, test UTF-8 frame */
+           {   
+               if ((*cp & mask) == bits)
+               {
+                   int i = len;
+                   while (i-- > 0)
+                   {
+                       cp++;
+                       if ((*cp & 0xc0) != 0x80) break;        /* invalid      */
+                       else if (i == 0)                        /* all valid    */
+                       {
+                           char *c = (char *)str;              /* found valid sequence, now storing value */
+                           int res = *c++ & (mask ^ 0xFF);
+                           i = len;
+                           while (i-- > 0)                     
+                               res = (res << 6) | (*c++ & 0x3f);
+                               
+                           if (bytes != NULL) *bytes = len + 1;
+                           if (value != NULL) *value = res;
+                           return CET_SUCESS;
+                       }
+                   }               
+               }
+               bits = (bits >> 1) | 0x80;
+               mask = (mask >> 1) | 0x80;
+           }
+       }
+       if (bytes != NULL) *bytes = 1;
+       if (value != NULL) *value = *cp;
+       return CET_ERROR;                                               /* not valid */
+}
+
+/* %%% cet_ucs4_to_char %%%
+ *
+ * convert single UCS-4 value to original character from CS 
+ *
+ * return values: coverted character or "CET_NOT_CONVERTABLE_DEFAULT"
+ *                if not possible
+ */
+short
+cet_ucs4_to_char(const int value, const cet_cs_vec_t *vec)
+{
+       cet_ucs4_link_t *link;
+
+       if ((link = (cet_ucs4_link_t *)vec->ucs4_link))
+       {
+           int i = 0;
+           int j = vec->ucs4_links - 1;                        /* validate ucs value against vec */
+           while (i <= j)
+           {
+               int a = (i + j) >> 1;
+               int x = link[a].value;
+           
+               if (x < value) i = a + 1;
+               else if (x > value) j = a - 1;
+               else return link[a].origin;
+           }
+       }
+
+       if ((link = (cet_ucs4_link_t *)vec->ucs4_extra))        /* can be NULL */
+       {
+           int i = 0;
+           int j = vec->ucs4_extras - 1;
+           while (i <= j)
+           {
+               int a = (i + j) >> 1;
+               int x = link[a].value;
+               
+               if (x < value) i = a + 1;
+               else if (x > value) j = a - 1;
+               else return link[a].origin;
+           }
+       }
+
+       if (value < vec->ucs4_offset + vec->ucs4_count)
+           return (char)value & 0xFF;
+       else
+           return CET_NOT_CONVERTABLE_DEFAULT;
+}
+
+/* %%% cet_utf8_to_char %%%
+ *
+ * Convert single UTF-8 sequence directly into associated characted
+ * by given character set.
+ */
+short
+cet_utf8_to_char(const char *str, const cet_cs_vec_t *vec, /* out */ int *bytes, int *value)
+{
+       int b, v;
+       
+       cet_utf8_to_ucs4(str, &b, &v);                  /* decode UTF-8 sequence */
+       
+       if (bytes != NULL) *bytes = b;
+       if (value != NULL) *value = v;
+       
+       return cet_ucs4_to_char(v, vec);
+}
+
+/* =========================================================================== */
+/* %%%                   full string transformation                        %%% */
+/* =========================================================================== */
+
+/* %%% cet_str_utf8_to_any %%%
+ *
+ * Converts a UTF-8 string to given character set 
+ */
+char *
+cet_str_utf8_to_any(const char *src, const cet_cs_vec_t *vec)
+{
+       char *c = (char *)src;
+       int len;
+       char *res, *dest, *cend;
+
+       if (c == NULL) return NULL;
+       
+       len = strlen(c);
+       res = dest = xmalloc(len + 1);  /* target will become smaller or equal length */
+       
+       cend = c + len;
+
+       while (c < cend)
+       {
+           int bytes;
+           *dest++ = cet_utf8_to_char(c, vec, &bytes, NULL);
+           c += bytes;
+       }
+       *dest = '\0';
+
+       return res;
+}
+
+
+/* %%% cet_str_any_to_utf8 %%%
+ *
+ * Converts a string from given character set to UTF-8
+ */
+char *
+cet_str_any_to_utf8(const char *src, const cet_cs_vec_t *vec)
+{
+       int len, value;
+       char *result, *cin, *cout;
+       char temp = CET_NOT_CONVERTABLE_DEFAULT;
+
+       cin = (char *)src;
+       if (cin == NULL) return NULL;
+
+       len = 0;
+       while (*cin != '\0')            /* determine length of resulting UTF-8 string */
+       {
+           if (CET_ERROR == cet_char_to_ucs4(*cin++, vec, &value))
+               cet_char_to_ucs4(temp, vec, &value);
+           len += cet_ucs4_to_utf8(NULL, 6, value);
+       }
+
+       result = cout = xmalloc(len + 1);
+       cin = (char *)src;
+
+       while (*cin != '\0')            
+       {
+           if (CET_ERROR == cet_char_to_ucs4(*cin++, vec, &value))
+               cet_char_to_ucs4(temp, vec, &value);
+           cout += cet_ucs4_to_utf8(cout, 6, value);
+       }
+       *cout = '\0';                   
+       return result;
+}
+
+/* %%% cet_str_uni_to_utf8 %%%
+ *
+ * Converts an unicode string to UTF-8
+ */
+char *
+cet_str_uni_to_utf8(const short *src, const int length)
+{
+       int i, len;
+       unsigned short *cin;
+       char *res, *cout;
+       
+       if (src == NULL) return NULL;
+       
+       len = 0;
+       i = length;
+       cin = (unsigned short *)src;
+
+       while (i-- > 0)
+           len += cet_ucs4_to_utf8(NULL, 6, *cin++);
+       
+       res = cout = xmalloc(len + 1);
+       cin = (unsigned short *)src;
+       i = length;
+
+       while (i-- > 0)
+           cout += cet_ucs4_to_utf8(cout, 6, *cin++);
+           
+       *cout = '\0';
+
+       return res;
+}
diff --git a/gpsbabel/cet.h b/gpsbabel/cet.h
new file mode 100644 (file)
index 0000000..aaf60f3
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+
+    Character encoding transformation - basics header
+
+    Copyright (C) 2005 Olaf Klein, o.b.klein@t-online.de
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+*/
+
+#ifndef CET_H
+#define CET_H
+
+#include <ctype.h>
+#include <stdio.h>
+
+#define CET_ERROR      1
+#define CET_SUCESS     0
+
+typedef struct cet_ucs4_link_s
+{
+       int value;                      /* UCS-4 value                  */
+       short origin;                   /* associeted character         */
+} cet_ucs4_link_t;
+
+typedef struct cet_cs_vec_s
+{
+       const char *name;                       /* name of character set        */
+       const char **alias;                     /* alias table                  */
+       int (*decode)(const char *, int *);     /* ... to UCS-4 decoder         !FUTURE! */
+       short (*encode)(const int);             /* UCS-4 to ... encoder         !FUTURE! */
+       const int *ucs4_map;                    /* char to UCS-4 value table    */
+       const int ucs4_offset;                  /* first non standard character */
+       const int ucs4_count;                   /* values in table              */
+       const cet_ucs4_link_t *ucs4_link;       /* UCS-4 to char backward links */
+       const int ucs4_links;                   /* number of links              */
+       const cet_ucs4_link_t *ucs4_extra;      /* Non standard UCS-4 to ...    */
+       const int ucs4_extras;                  /* number of extra links        */
+       struct cet_cs_vec_s *next;
+} cet_cs_vec_t;
+
+/* single char/value transmission */
+
+int cet_utf8_to_ucs4(const char *str, int *bytes, int *value);
+int cet_ucs4_to_utf8(char *dest, size_t dest_size, int value);
+
+/* single char/value transmission - vec based */
+
+int cet_char_to_ucs4(const char src, const cet_cs_vec_t *vec, int *value);
+short cet_utf8_to_char(const char *str, const cet_cs_vec_t *vecint, int *bytes, int *value);
+short cet_ucs4_to_char(const int value, const cet_cs_vec_t *vec);
+
+/* string to string - vector based */
+
+char *cet_str_utf8_to_any(const char *src, const cet_cs_vec_t *vec);
+char *cet_str_any_to_utf8(const char *src, const cet_cs_vec_t *vec);
+
+char *cet_str_uni_to_utf8(const short *src, const int length);
+
+#endif
diff --git a/gpsbabel/cet/ansi_x3_4_1968.h b/gpsbabel/cet/ansi_x3_4_1968.h
new file mode 100644 (file)
index 0000000..c16ea3c
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ANSI_X3.4-1968" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ansi_x3_4_1968_h
+#define ansi_x3_4_1968_h
+
+#define cet_cs_name_ansi_x3_4_1968 "US-ASCII"
+
+const char *cet_cs_alias_ansi_x3_4_1968[] = 
+{
+       "ANSI_X3.4-1968", "367/CR-LF", "ANSI_X3.4-1986", "ASCII", 
+       "CP367/CR-LF", "csASCII", "IBM367/CR-LF", "ISO646-US", 
+       "ISO646.1991-IRV", "iso-ir-6", "ISO_646.irv:1991", "us", 
+       "US-ASCII", NULL
+};
+
+#define cet_ucs4_ofs_ansi_x3_4_1968 128
+#define cet_ucs4_cnt_ansi_x3_4_1968 0
+
+const int cet_ucs4_map_ansi_x3_4_1968[cet_ucs4_cnt_ansi_x3_4_1968] =
+{
+};
+
+#define cet_ucs4_to_ansi_x3_4_1968_ct 0
+
+const cet_ucs4_link_t cet_ucs4_to_ansi_x3_4_1968_links[cet_ucs4_to_ansi_x3_4_1968_ct] =
+{
+};
+
+#define cet_ucs4_to_ansi_x3_4_1968_extra_ct 25
+
+const cet_ucs4_link_t cet_ucs4_to_ansi_x3_4_1968_extra[cet_ucs4_to_ansi_x3_4_1968_extra_ct] = 
+/* ------------------------------------------*/
+/* !!!      sorted by UCS-4 value        !!! */
+/* ------------------------------------------*/
+{
+       {0x00c0, (unsigned char) 'A'}, 
+       {0x00c1, (unsigned char) 'A'}, 
+       {0x00c2, (unsigned char) 'A'}, 
+       {0x00c3, (unsigned char) 'A'}, 
+       {0x00c4, (unsigned char) 'A'}, 
+       {0x00c5, (unsigned char) 'A'},
+       {0x00e0, (unsigned char) 'a'}, 
+       {0x00e1, (unsigned char) 'a'}, 
+       {0x00e2, (unsigned char) 'a'}, 
+       {0x00e3, (unsigned char) 'a'}, 
+       {0x00e4, (unsigned char) 'a'}, 
+       {0x00e5, (unsigned char) 'a'},
+       {0x00e8, (unsigned char) 'e'}, 
+       {0x00e9, (unsigned char) 'e'}, 
+       {0x00ea, (unsigned char) 'e'}, 
+       {0x00eb, (unsigned char) 'e'},
+       {0x00f2, (unsigned char) 'o'}, 
+       {0x00f3, (unsigned char) 'o'}, 
+       {0x00f4, (unsigned char) 'o'}, 
+       {0x00f5, (unsigned char) 'o'}, 
+       {0x00f6, (unsigned char) 'o'},
+       {0x00fc, (unsigned char) 'u'}, 
+       {0x1e94, (unsigned char) 'u'},
+       {0x201c, (unsigned char) '"'}, 
+       {0x201d, (unsigned char) '"'}
+};
+
+cet_cs_vec_t cet_cs_vec_ansi_x3_4_1968 =       /* defined in cet.h */
+{      
+       cet_cs_name_ansi_x3_4_1968,             /* name of character set        */
+       cet_cs_alias_ansi_x3_4_1968,            /* alias table                  */
+
+       NULL,                                   /* ... to UCS-4 converter (multi-byte) */
+       NULL,                                   /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ansi_x3_4_1968,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ansi_x3_4_1968,            /* first non standard character */
+       cet_ucs4_cnt_ansi_x3_4_1968,            /* number of values in table    */
+
+       cet_ucs4_to_ansi_x3_4_1968_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ansi_x3_4_1968_ct,          /* number of links              */
+
+       cet_ucs4_to_ansi_x3_4_1968_extra,       /* hand made UCS-4 links        */
+       cet_ucs4_to_ansi_x3_4_1968_extra_ct,    /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ansi_x3_4_1968_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/atarist.h b/gpsbabel/cet/atarist.h
new file mode 100644 (file)
index 0000000..b0403ad
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "AtariST" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef atarist_h
+#define atarist_h
+
+#define cet_cs_name_atarist "AtariST"
+
+const char *cet_cs_alias_atarist[] = 
+{
+       "AtariST", NULL
+};
+
+#define cet_ucs4_ofs_atarist 128
+#define cet_ucs4_cnt_atarist 128
+
+const int cet_ucs4_map_atarist[cet_ucs4_cnt_atarist] =
+{
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, 
+       0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 
+       0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x00df, 0x0192, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 
+       0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x00e3, 0x00f5, 0x00d8, 0x00f8, 0x0153, 0x0152, 0x00c0, 0x00c3, 
+       0x00d5, 0x00a8, 0x00b4, 0x2020, 0x00b6, 0x00a9, 0x00ae, 0x2122, 
+       0x0133, 0x0132, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 
+       0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05db, 0x05dc, 0x05de, 0x05e0, 
+       0x05e1, 0x05e2, 0x05e4, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 
+       0x05df, 0x05da, 0x05dd, 0x05e3, 0x05e5, 0x00a7, 0x2038, 0x221e, 
+       0x03b1, 0x03b2, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x03b8, 0x2126, 0x03b4, 0x222e, 0x03c6, 0x2208, 0x220f, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x00b0, 0x2022, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x00b3, 0x00af
+};
+
+#define cet_ucs4_to_atarist_ct 128
+
+const cet_ucs4_link_t cet_ucs4_to_atarist_links[cet_ucs4_to_atarist_ct] =
+{
+        {0x00a1, 0xad} /* exclamation mark */,
+        {0x00a2, 0x9b} /* sign */,
+        {0x00a3, 0x9c} /* sign */,
+        {0x00a5, 0x9d} /* sign */,
+        {0x00a7, 0xdd} /* sign */,
+        {0x00a8, 0xb9} /* diaeresis */,
+        {0x00a9, 0xbd} /* sign */,
+        {0x00aa, 0xa6} /* ordinal indicator */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ac, 0xaa} /* sign */,
+        {0x00ae, 0xbe} /* sign */,
+        {0x00af, 0xff} /* macron */,
+        {0x00b0, 0xf8} /* sign */,
+        {0x00b1, 0xf1} /* sign */,
+        {0x00b2, 0xfd} /* two */,
+        {0x00b3, 0xfe} /* three */,
+        {0x00b4, 0xba} /* accent */,
+        {0x00b5, 0xe6} /* sign */,
+        {0x00b6, 0xbc} /* sign */,
+        {0x00b7, 0xfa} /* dot */,
+        {0x00ba, 0xa7} /* ordinal indicator */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00bc, 0xac} /* fraction one quarter */,
+        {0x00bd, 0xab} /* fraction one half */,
+        {0x00bf, 0xa8} /* question mark */,
+        {0x00c0, 0xb6} /* capital letter a with grave */,
+        {0x00c3, 0xb7} /* capital letter a with tilde */,
+        {0x00c4, 0x8e} /* capital letter a with diaeresis */,
+        {0x00c5, 0x8f} /* capital letter a with ring above */,
+        {0x00c6, 0x92} /* capital letter ae */,
+        {0x00c7, 0x80} /* capital letter c with cedilla */,
+        {0x00c9, 0x90} /* capital letter e with acute */,
+        {0x00d1, 0xa5} /* capital letter n with tilde */,
+        {0x00d5, 0xb8} /* capital letter o with tilde */,
+        {0x00d6, 0x99} /* capital letter o with diaeresis */,
+        {0x00d8, 0xb2} /* capital letter o with stroke */,
+        {0x00dc, 0x9a} /* capital letter u with diaeresis */,
+        {0x00df, 0x9e} /* small letter sharp s (german) */,
+        {0x00e0, 0x85} /* small letter a with grave */,
+        {0x00e1, 0xa0} /* small letter a with acute */,
+        {0x00e2, 0x83} /* small letter a with circumflex */,
+        {0x00e3, 0xb0} /* small letter a with tilde */,
+        {0x00e4, 0x84} /* small letter a with diaeresis */,
+        {0x00e5, 0x86} /* small letter a with ring above */,
+        {0x00e6, 0x91} /* small letter ae */,
+        {0x00e7, 0x87} /* small letter c with cedilla */,
+        {0x00e8, 0x8a} /* small letter e with grave */,
+        {0x00e9, 0x82} /* small letter e with acute */,
+        {0x00ea, 0x88} /* small letter e with circumflex */,
+        {0x00eb, 0x89} /* small letter e with diaeresis */,
+        {0x00ec, 0x8d} /* small letter i with grave */,
+        {0x00ed, 0xa1} /* small letter i with acute */,
+        {0x00ee, 0x8c} /* small letter i with circumflex */,
+        {0x00ef, 0x8b} /* small letter i with diaeresis */,
+        {0x00f1, 0xa4} /* small letter n with tilde */,
+        {0x00f2, 0x95} /* small letter o with grave */,
+        {0x00f3, 0xa2} /* small letter o with acute */,
+        {0x00f4, 0x93} /* small letter o with circumflex */,
+        {0x00f5, 0xb1} /* small letter o with tilde */,
+        {0x00f6, 0x94} /* small letter o with diaeresis */,
+        {0x00f7, 0xf6} /* sign */,
+        {0x00f8, 0xb3} /* small letter o with stroke */,
+        {0x00f9, 0x97} /* small letter u with grave */,
+        {0x00fa, 0xa3} /* small letter u with acute */,
+        {0x00fb, 0x96} /* small letter u with circumflex */,
+        {0x00fc, 0x81} /* small letter u with diaeresis */,
+        {0x00ff, 0x98} /* small letter y with diaeresis */,
+        {0x0132, 0xc1} /* capital ligature ij */,
+        {0x0133, 0xc0} /* small ligature ij */,
+        {0x0152, 0xb5} /* capital ligature oe */,
+        {0x0153, 0xb4} /* small ligature oe */,
+        {0x0192, 0x9f} /* minuscule latine f hameçon */,
+        {0x0393, 0xe2} /* capital letter gamma */,
+        {0x03a3, 0xe4} /* capital letter sigma */,
+        {0x03a6, 0xe8} /* capital letter phi */,
+        {0x03b1, 0xe0} /* small letter alpha */,
+        {0x03b2, 0xe1} /* small letter beta */,
+        {0x03b4, 0xeb} /* small letter delta */,
+        {0x03b8, 0xe9} /* small letter theta */,
+        {0x03c0, 0xe3} /* small letter pi */,
+        {0x03c3, 0xe5} /* small letter sigma */,
+        {0x03c4, 0xe7} /* small letter tau */,
+        {0x03c6, 0xed} /* small letter phi */,
+        {0x05d0, 0xc2} /* letter alef */,
+        {0x05d1, 0xc3} /* letter bet */,
+        {0x05d2, 0xc4} /* letter gimel */,
+        {0x05d3, 0xc5} /* letter dalet */,
+        {0x05d4, 0xc6} /* letter he */,
+        {0x05d5, 0xc7} /* letter vav */,
+        {0x05d6, 0xc8} /* letter zayin */,
+        {0x05d7, 0xc9} /* letter het */,
+        {0x05d8, 0xca} /* letter tet */,
+        {0x05d9, 0xcb} /* letter yod */,
+        {0x05da, 0xd9} /* letter final kaf */,
+        {0x05db, 0xcc} /* letter kaf */,
+        {0x05dc, 0xcd} /* letter lamed */,
+        {0x05dd, 0xda} /* letter final mem */,
+        {0x05de, 0xce} /* letter mem */,
+        {0x05df, 0xd8} /* letter final nun */,
+        {0x05e0, 0xcf} /* letter nun */,
+        {0x05e1, 0xd0} /* letter samekh */,
+        {0x05e2, 0xd1} /* letter ayin */,
+        {0x05e3, 0xdb} /* letter final pe */,
+        {0x05e4, 0xd2} /* letter pe */,
+        {0x05e5, 0xdc} /* letter final tsadi */,
+        {0x05e6, 0xd3} /* letter tsadi */,
+        {0x05e7, 0xd4} /* letter qof */,
+        {0x05e8, 0xd5} /* letter resh */,
+        {0x05e9, 0xd6} /* letter shin */,
+        {0x05ea, 0xd7} /* letter tav */,
+        {0x2020, 0xbb} /* dagger */,
+        {0x2022, 0xf9} /* puce */,
+        {0x2038, 0xde} /* caret */,
+        {0x207f, 0xfc} /* latin small letter n */,
+        {0x2122, 0xbf} /* mark sign */,
+        {0x2126, 0xea} /* sign */,
+        {0x2208, 0xee} /* of */,
+        {0x220f, 0xef} /* product */,
+        {0x221a, 0xfb} /* root */,
+        {0x221e, 0xdf} /* infinity */,
+        {0x222e, 0xec} /* integral */,
+        {0x2248, 0xf7} /* equal to */,
+        {0x2261, 0xf0} /* to */,
+        {0x2264, 0xf3} /* or equal to */,
+        {0x2265, 0xf2} /* or equal to */,
+        {0x2310, 0xa9} /* not sign */,
+        {0x2320, 0xf4} /* half integral */,
+        {0x2321, 0xf5} /* half integral */
+};
+
+/*
+#define cet_ucs4_to_atarist_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_atarist_extra[cet_ucs4_to_atarist_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_atarist =      /* defined in cet.h */
+{      
+       cet_cs_name_atarist,            /* name of character set        */
+       cet_cs_alias_atarist,           /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_atarist,           /* char to UCS-4 value table    */
+       cet_ucs4_ofs_atarist,           /* first non standard character */
+       cet_ucs4_cnt_atarist,           /* number of values in table    */
+
+       cet_ucs4_to_atarist_links,      /* UCS-4 to char links          */
+       cet_ucs4_to_atarist_ct,         /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int atarist_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, 
+       0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 
+       0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x00df, 0x0192, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 
+       0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x00e3, 0x00f5, 0x00d8, 0x00f8, 0x0153, 0x0152, 0x00c0, 0x00c3, 
+       0x00d5, 0x00a8, 0x00b4, 0x2020, 0x00b6, 0x00a9, 0x00ae, 0x2122, 
+       0x0133, 0x0132, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 
+       0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05db, 0x05dc, 0x05de, 0x05e0, 
+       0x05e1, 0x05e2, 0x05e4, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 
+       0x05df, 0x05da, 0x05dd, 0x05e3, 0x05e5, 0x00a7, 0x2038, 0x221e, 
+       0x03b1, 0x03b2, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x03b8, 0x2126, 0x03b4, 0x222e, 0x03c6, 0x2208, 0x220f, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x00b0, 0x2022, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x00b3, 0x00af
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/baltic.h b/gpsbabel/cet/baltic.h
new file mode 100644 (file)
index 0000000..fdc4362
--- /dev/null
@@ -0,0 +1,178 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "baltic" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef baltic_h
+#define baltic_h
+
+#define cet_cs_name_baltic "baltic"
+
+const char *cet_cs_alias_baltic[] = 
+{
+       "baltic", "iso-ir-179", NULL
+};
+
+#define cet_ucs4_ofs_baltic 161
+#define cet_ucs4_cnt_baltic 95
+
+const int cet_ucs4_map_baltic[cet_ucs4_cnt_baltic] =
+{
+       0x201d, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00d8, 
+       0x00a9, 0x201e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, 0x00b0, 
+       0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00f8, 
+       0x00b9, 0x201c, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, 0x012e, 
+       0x0116, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0104, 0x010c, 0x0122, 
+       0x00c9, 0x017d, 0x0118, 0x0112, 0x0136, 0x012a, 0x013b, 0x0141, 
+       0x0145, 0x0143, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, 0x0172, 
+       0x0160, 0x015a, 0x016a, 0x00dc, 0x017b, 0x0179, 0x00df, 0x012f, 
+       0x0117, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0105, 0x010d, 0x0123, 
+       0x00e9, 0x017e, 0x0119, 0x0113, 0x0137, 0x012b, 0x013c, 0x0142, 
+       0x0146, 0x0144, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, 0x0173, 
+       0x0161, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017a, 0x0138
+};
+
+#define cet_ucs4_to_baltic_ct 54
+
+const cet_ucs4_link_t cet_ucs4_to_baltic_links[cet_ucs4_to_baltic_ct] =
+{
+        {0x00c6, 0xaf} /* capital letter ae */,
+        {0x00d8, 0xa8} /* capital letter o with stroke */,
+        {0x00e6, 0xbf} /* small letter ae */,
+        {0x00f8, 0xb8} /* small letter o with stroke */,
+        {0x0100, 0xc2} /* capital letter a with macron */,
+        {0x0101, 0xe2} /* small letter a with macron */,
+        {0x0104, 0xc6} /* capital letter a with ogonek */,
+        {0x0105, 0xe6} /* small letter a with ogonek */,
+        {0x0106, 0xc3} /* capital letter c with acute */,
+        {0x0107, 0xe3} /* small letter c with acute */,
+        {0x010c, 0xc7} /* capital letter c with caron */,
+        {0x010d, 0xe7} /* small letter c with caron */,
+        {0x0112, 0xcc} /* capital letter e with macron */,
+        {0x0113, 0xec} /* small letter e with macron */,
+        {0x0116, 0xc1} /* capital letter e with dot above */,
+        {0x0117, 0xe1} /* small letter e with dot above */,
+        {0x0118, 0xcb} /* capital letter e with ogonek */,
+        {0x0119, 0xeb} /* small letter e with ogonek */,
+        {0x0122, 0xc8} /* capital letter g with cedilla */,
+        {0x0123, 0xe8} /* small letter g with cedilla */,
+        {0x012a, 0xce} /* capital letter i with macron */,
+        {0x012b, 0xee} /* small letter i with macron */,
+        {0x012e, 0xc0} /* capital letter i with ogonek */,
+        {0x012f, 0xe0} /* small letter i with ogonek */,
+        {0x0136, 0xcd} /* capital letter k with cedilla */,
+        {0x0137, 0xed} /* small letter k with cedilla */,
+        {0x0138, 0xff} /* small letter kra (greenlandic) */,
+        {0x013b, 0xcf} /* capital letter l with cedilla */,
+        {0x013c, 0xef} /* small letter l with cedilla */,
+        {0x0141, 0xd0} /* capital letter l with stroke */,
+        {0x0142, 0xf0} /* small letter l with stroke */,
+        {0x0143, 0xd2} /* capital letter n with acute */,
+        {0x0144, 0xf2} /* small letter n with acute */,
+        {0x0145, 0xd1} /* capital letter n with cedilla */,
+        {0x0146, 0xf1} /* small letter n with cedilla */,
+        {0x014c, 0xd4} /* capital letter o with macron */,
+        {0x014d, 0xf4} /* small letter o with macron */,
+        {0x015a, 0xda} /* capital letter s with acute */,
+        {0x015b, 0xfa} /* small letter s with acute */,
+        {0x0160, 0xd9} /* capital letter s with caron */,
+        {0x0161, 0xf9} /* small letter s with caron */,
+        {0x016a, 0xdb} /* capital letter u with macron */,
+        {0x016b, 0xfb} /* small letter u with macron */,
+        {0x0172, 0xd8} /* capital letter u with ogonek */,
+        {0x0173, 0xf8} /* small letter u with ogonek */,
+        {0x0179, 0xde} /* capital letter z with acute */,
+        {0x017a, 0xfe} /* small letter z with acute */,
+        {0x017b, 0xdd} /* capital letter z with dot above */,
+        {0x017c, 0xfd} /* small letter z with dot above */,
+        {0x017d, 0xca} /* capital letter z with caron */,
+        {0x017e, 0xea} /* small letter z with caron */,
+        {0x201c, 0xba} /* double quotation mark */,
+        {0x201d, 0xa1} /* double quotation mark */,
+        {0x201e, 0xaa} /* low-9 quotation mark */
+};
+
+/*
+#define cet_ucs4_to_baltic_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_baltic_extra[cet_ucs4_to_baltic_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_baltic =       /* defined in cet.h */
+{      
+       cet_cs_name_baltic,             /* name of character set        */
+       cet_cs_alias_baltic,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_baltic,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_baltic,            /* first non standard character */
+       cet_ucs4_cnt_baltic,            /* number of values in table    */
+
+       cet_ucs4_to_baltic_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_baltic_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int baltic_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00d8, 0x00a9, 0x201e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00f8, 0x00b9, 0x201c, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, 
+       0x012e, 0x0116, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0104, 0x010c, 
+       0x0122, 0x00c9, 0x017d, 0x0118, 0x0112, 0x0136, 0x012a, 0x013b, 
+       0x0141, 0x0145, 0x0143, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, 
+       0x0172, 0x0160, 0x015a, 0x016a, 0x00dc, 0x017b, 0x0179, 0x00df, 
+       0x012f, 0x0117, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0105, 0x010d, 
+       0x0123, 0x00e9, 0x017e, 0x0119, 0x0113, 0x0137, 0x012b, 0x013c, 
+       0x0142, 0x0146, 0x0144, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, 
+       0x0173, 0x0161, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017a, 0x0138
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/bs_4730.h b/gpsbabel/cet/bs_4730.h
new file mode 100644 (file)
index 0000000..1aea8fe
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "BS_4730" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef bs_4730_h
+#define bs_4730_h
+
+#define cet_cs_name_bs_4730 "BS_4730"
+
+const char *cet_cs_alias_bs_4730[] = 
+{
+       "BS_4730", "gb", "ISO646-GB", "iso-ir-4", 
+       "uk", NULL
+};
+
+#define cet_ucs4_ofs_bs_4730 35
+#define cet_ucs4_cnt_bs_4730 93
+
+const int cet_ucs4_map_bs_4730[cet_ucs4_cnt_bs_4730] =
+{
+       0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 
+       0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 
+       0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 
+       0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 
+       0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 
+       0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 
+       0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 
+       0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 
+       0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 
+       0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 
+       0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 
+       0x007b, 0x007c, 0x007d, 0x203e, 0x007f
+};
+
+#define cet_ucs4_to_bs_4730_ct 2
+
+const cet_ucs4_link_t cet_ucs4_to_bs_4730_links[cet_ucs4_to_bs_4730_ct] =
+{
+        {0x00a3, 0x23} /* sign */,
+        {0x203e, 0x7e} /* overline */
+};
+
+/*
+#define cet_ucs4_to_bs_4730_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_bs_4730_extra[cet_ucs4_to_bs_4730_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_bs_4730 =      /* defined in cet.h */
+{      
+       cet_cs_name_bs_4730,            /* name of character set        */
+       cet_cs_alias_bs_4730,           /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_bs_4730,           /* char to UCS-4 value table    */
+       cet_ucs4_ofs_bs_4730,           /* first non standard character */
+       cet_ucs4_cnt_bs_4730,           /* number of values in table    */
+
+       cet_ucs4_to_bs_4730_links,      /* UCS-4 to char links          */
+       cet_ucs4_to_bs_4730_ct,         /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int bs_4730_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/bs_viewdata.h b/gpsbabel/cet/bs_viewdata.h
new file mode 100644 (file)
index 0000000..b8f450f
--- /dev/null
@@ -0,0 +1,134 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "BS_viewdata" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef bs_viewdata_h
+#define bs_viewdata_h
+
+#define cet_cs_name_bs_viewdata "BS_viewdata"
+
+const char *cet_cs_alias_bs_viewdata[] = 
+{
+       "BS_viewdata", "iso-ir-47", NULL
+};
+
+#define cet_ucs4_ofs_bs_viewdata 35
+#define cet_ucs4_cnt_bs_viewdata 93
+
+const int cet_ucs4_map_bs_viewdata[cet_ucs4_cnt_bs_viewdata] =
+{
+       0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 
+       0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 
+       0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 
+       0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 
+       0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 
+       0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 
+       0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 
+       0x2190, 0x00bd, 0x2192, 0x2191, 0x25a1, 0x0060, 0x0061, 0x0062, 
+       0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 
+       0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 
+       0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 
+       0x00bc, 0x2225, 0x00be, 0x00f7, 0x007f
+};
+
+#define cet_ucs4_to_bs_viewdata_ct 10
+
+const cet_ucs4_link_t cet_ucs4_to_bs_viewdata_links[cet_ucs4_to_bs_viewdata_ct] =
+{
+        {0x00a3, 0x23} /* sign */,
+        {0x00bc, 0x7b} /* fraction one quarter */,
+        {0x00bd, 0x5c} /* fraction one half */,
+        {0x00be, 0x7d} /* fraction three quarters */,
+        {0x00f7, 0x7e} /* sign */,
+        {0x2190, 0x5b} /* arrow */,
+        {0x2191, 0x5e} /* arrow */,
+        {0x2192, 0x5d} /* arrow */,
+        {0x2225, 0x7c} /* to */,
+        {0x25a1, 0x5f} /* square */
+};
+
+/*
+#define cet_ucs4_to_bs_viewdata_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_bs_viewdata_extra[cet_ucs4_to_bs_viewdata_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_bs_viewdata =  /* defined in cet.h */
+{      
+       cet_cs_name_bs_viewdata,                /* name of character set        */
+       cet_cs_alias_bs_viewdata,               /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_bs_viewdata,               /* char to UCS-4 value table    */
+       cet_ucs4_ofs_bs_viewdata,               /* first non standard character */
+       cet_ucs4_cnt_bs_viewdata,               /* number of values in table    */
+
+       cet_ucs4_to_bs_viewdata_links,  /* UCS-4 to char links          */
+       cet_ucs4_to_bs_viewdata_ct,             /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int bs_viewdata_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x2190, 0x00bd, 0x2192, 0x2191, 0x25a1, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00bc, 0x2225, 0x00be, 0x00f7, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/cp1250.h b/gpsbabel/cet/cp1250.h
new file mode 100644 (file)
index 0000000..6440aa2
--- /dev/null
@@ -0,0 +1,203 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "CP1250" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef cp1250_h
+#define cp1250_h
+
+#define cet_cs_name_cp1250 "CP1250"
+
+const char *cet_cs_alias_cp1250[] = 
+{
+       "CP1250/CR-LF", "1250/CR-LF", "ms-ee", "windows-1250", "WIN-CP1250",
+       NULL
+};
+
+#define cet_ucs4_ofs_cp1250 128
+#define cet_ucs4_cnt_cp1250 128
+
+const int cet_ucs4_map_cp1250[cet_ucs4_cnt_cp1250] =
+{
+       0x20ac,     -1, 0x201a,     -1, 0x201e, 0x2026, 0x2020, 0x2021, 
+           -1, 0x2030, 0x0160, 0x2039, 0x015a, 0x0164, 0x017d, 0x0179, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+           -1, 0x2122, 0x0161, 0x203a, 0x015b, 0x0165, 0x017e, 0x017a, 
+       0x00a0, 0x02c7, 0x02d8, 0x0141, 0x00a4, 0x0104, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x015e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x017b, 
+       0x00b0, 0x00b1, 0x02db, 0x0142, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x0105, 0x015f, 0x00bb, 0x013d, 0x02dd, 0x013e, 0x017c, 
+       0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, 
+       0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, 
+       0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, 
+       0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, 
+       0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, 
+       0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, 
+       0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, 
+       0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9
+};
+
+#define cet_ucs4_to_cp1250_ct 74
+
+const cet_ucs4_link_t cet_ucs4_to_cp1250_links[cet_ucs4_to_cp1250_ct] =
+{
+        {0x0102, 0xc3} /* capital letter a with breve */,
+        {0x0103, 0xe3} /* small letter a with breve */,
+        {0x0104, 0xa5} /* capital letter a with ogonek */,
+        {0x0105, 0xb9} /* small letter a with ogonek */,
+        {0x0106, 0xc6} /* capital letter c with acute */,
+        {0x0107, 0xe6} /* small letter c with acute */,
+        {0x010c, 0xc8} /* capital letter c with caron */,
+        {0x010d, 0xe8} /* small letter c with caron */,
+        {0x010e, 0xcf} /* capital letter d with caron */,
+        {0x010f, 0xef} /* small letter d with caron */,
+        {0x0110, 0xd0} /* capital letter d with stroke */,
+        {0x0111, 0xf0} /* small letter d with stroke */,
+        {0x0118, 0xca} /* capital letter e with ogonek */,
+        {0x0119, 0xea} /* small letter e with ogonek */,
+        {0x011a, 0xcc} /* capital letter e with caron */,
+        {0x011b, 0xec} /* small letter e with caron */,
+        {0x0139, 0xc5} /* capital letter l with acute */,
+        {0x013a, 0xe5} /* small letter l with acute */,
+        {0x013d, 0xbc} /* capital letter l with caron */,
+        {0x013e, 0xbe} /* small letter l with caron */,
+        {0x0141, 0xa3} /* capital letter l with stroke */,
+        {0x0142, 0xb3} /* small letter l with stroke */,
+        {0x0143, 0xd1} /* capital letter n with acute */,
+        {0x0144, 0xf1} /* small letter n with acute */,
+        {0x0147, 0xd2} /* capital letter n with caron */,
+        {0x0148, 0xf2} /* small letter n with caron */,
+        {0x0150, 0xd5} /* capital letter o with double acute */,
+        {0x0151, 0xf5} /* small letter o with double acute */,
+        {0x0154, 0xc0} /* capital letter r with acute */,
+        {0x0155, 0xe0} /* small letter r with acute */,
+        {0x0158, 0xd8} /* capital letter r with caron */,
+        {0x0159, 0xf8} /* small letter r with caron */,
+        {0x015a, 0x8c} /* capital letter s with acute */,
+        {0x015b, 0x9c} /* small letter s with acute */,
+        {0x015e, 0xaa} /* capital letter s with cedilla */,
+        {0x015f, 0xba} /* small letter s with cedilla */,
+        {0x0160, 0x8a} /* capital letter s with caron */,
+        {0x0161, 0x9a} /* small letter s with caron */,
+        {0x0162, 0xde} /* capital letter t with cedilla */,
+        {0x0163, 0xfe} /* small letter t with cedilla */,
+        {0x0164, 0x8d} /* capital letter t with caron */,
+        {0x0165, 0x9d} /* small letter t with caron */,
+        {0x016e, 0xd9} /* capital letter u with ring above */,
+        {0x016f, 0xf9} /* small letter u with ring above */,
+        {0x0170, 0xdb} /* capital letter u with double acute */,
+        {0x0171, 0xfb} /* small letter u with double acute */,
+        {0x0179, 0x8f} /* capital letter z with acute */,
+        {0x017a, 0x9f} /* small letter z with acute */,
+        {0x017b, 0xaf} /* capital letter z with dot above */,
+        {0x017c, 0xbf} /* small letter z with dot above */,
+        {0x017d, 0x8e} /* capital letter z with caron */,
+        {0x017e, 0x9e} /* small letter z with caron */,
+        {0x02c7, 0xa1} /* caron */,
+        {0x02d8, 0xa2} /* breve */,
+        {0x02d9, 0xff} /* above */,
+        {0x02db, 0xb2} /* ogonek */,
+        {0x02dd, 0xbd} /* acute accent */,
+        {0x2013, 0x96} /* dash */,
+        {0x2014, 0x97} /* dash */,
+        {0x2018, 0x91} /* single quotation mark */,
+        {0x2019, 0x92} /* single quotation mark */,
+        {0x201a, 0x82} /* low-9 quotation mark */,
+        {0x201c, 0x93} /* double quotation mark */,
+        {0x201d, 0x94} /* double quotation mark */,
+        {0x201e, 0x84} /* low-9 quotation mark */,
+        {0x2020, 0x86} /* dagger */,
+        {0x2021, 0x87} /* dagger */,
+        {0x2022, 0x95} /* puce */,
+        {0x2026, 0x85} /* horizontal ellipsis */,
+        {0x2030, 0x89} /* mille sign */,
+        {0x2039, 0x8b} /* left-pointing angle quotation mark */,
+        {0x203a, 0x9b} /* right-pointing angle quotation mark */,
+        {0x20ac, 0x80} /* euro */,
+        {0x2122, 0x99} /* mark sign */
+};
+
+/*
+#define cet_ucs4_to_cp1250_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_cp1250_extra[cet_ucs4_to_cp1250_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_cp1250 =       /* defined in cet.h */
+{      
+       cet_cs_name_cp1250,             /* name of character set        */
+       cet_cs_alias_cp1250,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_cp1250,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_cp1250,            /* first non standard character */
+       cet_ucs4_cnt_cp1250,            /* number of values in table    */
+
+       cet_ucs4_to_cp1250_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_cp1250_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int cp1250_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x20ac,     -1, 0x201a,     -1, 0x201e, 0x2026, 0x2020, 0x2021, 
+           -1, 0x2030, 0x0160, 0x2039, 0x015a, 0x0164, 0x017d, 0x0179, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+           -1, 0x2122, 0x0161, 0x203a, 0x015b, 0x0165, 0x017e, 0x017a, 
+       0x00a0, 0x02c7, 0x02d8, 0x0141, 0x00a4, 0x0104, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x015e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x017b, 
+       0x00b0, 0x00b1, 0x02db, 0x0142, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x0105, 0x015f, 0x00bb, 0x013d, 0x02dd, 0x013e, 0x017c, 
+       0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, 
+       0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, 
+       0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, 
+       0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, 
+       0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, 
+       0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, 
+       0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, 
+       0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/cp1251.h b/gpsbabel/cet/cp1251.h
new file mode 100644 (file)
index 0000000..7c4b494
--- /dev/null
@@ -0,0 +1,241 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "CP1251" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef cp1251_h
+#define cp1251_h
+
+#define cet_cs_name_cp1251 "CP1251"
+
+const char *cet_cs_alias_cp1251[] = 
+{
+       "CP1251/CR-LF", "1251/CR-LF", "ms-cyrl", "windows-1251", "WIN-CP1251",
+       NULL
+};
+
+#define cet_ucs4_ofs_cp1251 128
+#define cet_ucs4_cnt_cp1251 128
+
+const int cet_ucs4_map_cp1251[cet_ucs4_cnt_cp1251] =
+{
+       0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021, 
+       0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f, 
+       0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+           -1, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f, 
+       0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7, 
+       0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407, 
+       0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7, 
+       0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457, 
+       0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 
+       0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 
+       0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 
+       0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 
+       0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 
+       0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 
+       0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 
+       0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f
+};
+
+#define cet_ucs4_to_cp1251_ct 112
+
+const cet_ucs4_link_t cet_ucs4_to_cp1251_links[cet_ucs4_to_cp1251_ct] =
+{
+        {0x0401, 0xa8} /* capital letter io */,
+        {0x0402, 0x80} /* capital letter dje (serbocroatian) */,
+        {0x0403, 0x81} /* capital letter gje (macedonian) */,
+        {0x0404, 0xaa} /* capital letter ukrainian ie */,
+        {0x0405, 0xbd} /* capital letter dze (macedonian) */,
+        {0x0406, 0xb2} /* capital letter byelorussian-ukrainian i */,
+        {0x0407, 0xaf} /* capital letter yi (ukrainian) */,
+        {0x0408, 0xa3} /* capital letter je */,
+        {0x0409, 0x8a} /* capital letter lje */,
+        {0x040a, 0x8c} /* capital letter nje */,
+        {0x040b, 0x8e} /* capital letter tshe (serbocroatian) */,
+        {0x040c, 0x8d} /* capital letter kje (macedonian) */,
+        {0x040e, 0xa1} /* capital letter short u (byelorussian) */,
+        {0x040f, 0x8f} /* capital letter dzhe */,
+        {0x0410, 0xc0} /* capital letter a */,
+        {0x0411, 0xc1} /* capital letter be */,
+        {0x0412, 0xc2} /* capital letter ve */,
+        {0x0413, 0xc3} /* capital letter ghe */,
+        {0x0414, 0xc4} /* capital letter de */,
+        {0x0415, 0xc5} /* capital letter ie */,
+        {0x0416, 0xc6} /* capital letter zhe */,
+        {0x0417, 0xc7} /* capital letter ze */,
+        {0x0418, 0xc8} /* capital letter i */,
+        {0x0419, 0xc9} /* capital letter short i */,
+        {0x041a, 0xca} /* capital letter ka */,
+        {0x041b, 0xcb} /* capital letter el */,
+        {0x041c, 0xcc} /* capital letter em */,
+        {0x041d, 0xcd} /* capital letter en */,
+        {0x041e, 0xce} /* capital letter o */,
+        {0x041f, 0xcf} /* capital letter pe */,
+        {0x0420, 0xd0} /* capital letter er */,
+        {0x0421, 0xd1} /* capital letter es */,
+        {0x0422, 0xd2} /* capital letter te */,
+        {0x0423, 0xd3} /* capital letter u */,
+        {0x0424, 0xd4} /* capital letter ef */,
+        {0x0425, 0xd5} /* capital letter ha */,
+        {0x0426, 0xd6} /* capital letter tse */,
+        {0x0427, 0xd7} /* capital letter che */,
+        {0x0428, 0xd8} /* capital letter sha */,
+        {0x0429, 0xd9} /* capital letter shcha */,
+        {0x042a, 0xda} /* capital letter hard sign */,
+        {0x042b, 0xdb} /* capital letter yeru */,
+        {0x042c, 0xdc} /* capital letter soft sign */,
+        {0x042d, 0xdd} /* capital letter e */,
+        {0x042e, 0xde} /* capital letter yu */,
+        {0x042f, 0xdf} /* capital letter ya */,
+        {0x0430, 0xe0} /* small letter a */,
+        {0x0431, 0xe1} /* small letter be */,
+        {0x0432, 0xe2} /* small letter ve */,
+        {0x0433, 0xe3} /* small letter ghe */,
+        {0x0434, 0xe4} /* small letter de */,
+        {0x0435, 0xe5} /* small letter ie */,
+        {0x0436, 0xe6} /* small letter zhe */,
+        {0x0437, 0xe7} /* small letter ze */,
+        {0x0438, 0xe8} /* small letter i */,
+        {0x0439, 0xe9} /* small letter short i */,
+        {0x043a, 0xea} /* small letter ka */,
+        {0x043b, 0xeb} /* small letter el */,
+        {0x043c, 0xec} /* small letter em */,
+        {0x043d, 0xed} /* small letter en */,
+        {0x043e, 0xee} /* small letter o */,
+        {0x043f, 0xef} /* small letter pe */,
+        {0x0440, 0xf0} /* small letter er */,
+        {0x0441, 0xf1} /* small letter es */,
+        {0x0442, 0xf2} /* small letter te */,
+        {0x0443, 0xf3} /* small letter u */,
+        {0x0444, 0xf4} /* small letter ef */,
+        {0x0445, 0xf5} /* small letter ha */,
+        {0x0446, 0xf6} /* small letter tse */,
+        {0x0447, 0xf7} /* small letter che */,
+        {0x0448, 0xf8} /* small letter sha */,
+        {0x0449, 0xf9} /* small letter shcha */,
+        {0x044a, 0xfa} /* small letter hard sign */,
+        {0x044b, 0xfb} /* small letter yeru */,
+        {0x044c, 0xfc} /* small letter soft sign */,
+        {0x044d, 0xfd} /* small letter e */,
+        {0x044e, 0xfe} /* small letter yu */,
+        {0x044f, 0xff} /* small letter ya */,
+        {0x0451, 0xb8} /* small letter io */,
+        {0x0452, 0x90} /* small letter dje (serbocroatian) */,
+        {0x0453, 0x83} /* small letter gje (macedonian) */,
+        {0x0454, 0xba} /* small letter ukrainian ie */,
+        {0x0455, 0xbe} /* small letter dze (macedonian) */,
+        {0x0456, 0xb3} /* small letter byelorussian-ukrainian i */,
+        {0x0457, 0xbf} /* small letter yi (ukrainian) */,
+        {0x0458, 0xbc} /* small letter je */,
+        {0x0459, 0x9a} /* small letter lje */,
+        {0x045a, 0x9c} /* small letter nje */,
+        {0x045b, 0x9e} /* small letter tshe (serbocroatian) */,
+        {0x045c, 0x9d} /* small letter kje (macedonian) */,
+        {0x045e, 0xa2} /* small letter short u (byelorussian) */,
+        {0x045f, 0x9f} /* small letter dzhe */,
+        {0x0490, 0xa5} /* capital letter ghe with upturn */,
+        {0x0491, 0xb4} /* small letter ghe with upturn */,
+        {0x2013, 0x96} /* dash */,
+        {0x2014, 0x97} /* dash */,
+        {0x2018, 0x91} /* single quotation mark */,
+        {0x2019, 0x92} /* single quotation mark */,
+        {0x201a, 0x82} /* low-9 quotation mark */,
+        {0x201c, 0x93} /* double quotation mark */,
+        {0x201d, 0x94} /* double quotation mark */,
+        {0x201e, 0x84} /* low-9 quotation mark */,
+        {0x2020, 0x86} /* dagger */,
+        {0x2021, 0x87} /* dagger */,
+        {0x2022, 0x95} /* puce */,
+        {0x2026, 0x85} /* horizontal ellipsis */,
+        {0x2030, 0x89} /* mille sign */,
+        {0x2039, 0x8b} /* left-pointing angle quotation mark */,
+        {0x203a, 0x9b} /* right-pointing angle quotation mark */,
+        {0x20ac, 0x88} /* euro */,
+        {0x2116, 0xb9} /* sign */,
+        {0x2122, 0x99} /* mark sign */
+};
+
+/*
+#define cet_ucs4_to_cp1251_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_cp1251_extra[cet_ucs4_to_cp1251_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_cp1251 =       /* defined in cet.h */
+{      
+       cet_cs_name_cp1251,             /* name of character set        */
+       cet_cs_alias_cp1251,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_cp1251,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_cp1251,            /* first non standard character */
+       cet_ucs4_cnt_cp1251,            /* number of values in table    */
+
+       cet_ucs4_to_cp1251_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_cp1251_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int cp1251_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021, 
+       0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f, 
+       0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+           -1, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f, 
+       0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7, 
+       0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407, 
+       0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7, 
+       0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457, 
+       0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 
+       0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 
+       0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 
+       0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 
+       0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 
+       0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 
+       0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 
+       0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/cp1252.h b/gpsbabel/cet/cp1252.h
new file mode 100644 (file)
index 0000000..bf5ca0d
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "CP1252" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef cp1252_h
+#define cp1252_h
+
+#define cet_cs_name_cp1252 "CP1252"
+
+const char *cet_cs_alias_cp1252[] = 
+{
+       "CP1252/CR-LF", "1252/CR-LF", "ms-ansi", "windows-1252", "WIN-CP1252",
+       NULL
+};
+
+#define cet_ucs4_ofs_cp1252 128
+#define cet_ucs4_cnt_cp1252 128
+
+const int cet_ucs4_map_cp1252[cet_ucs4_cnt_cp1252] =
+{
+       0x20ac,     -1, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 
+       0x02c6, 0x2030, 0x0160, 0x2039, 0x0152,     -1, 0x017d,     -1, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+       0x02dc, 0x2122, 0x0161, 0x203a, 0x0153,     -1, 0x017e, 0x0178, 
+       0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+       0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 
+       0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 
+       0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 
+       0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 
+       0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+
+#define cet_ucs4_to_cp1252_ct 27
+
+const cet_ucs4_link_t cet_ucs4_to_cp1252_links[cet_ucs4_to_cp1252_ct] =
+{
+        {0x0152, 0x8c} /* capital ligature oe */,
+        {0x0153, 0x9c} /* small ligature oe */,
+        {0x0160, 0x8a} /* capital letter s with caron */,
+        {0x0161, 0x9a} /* small letter s with caron */,
+        {0x0178, 0x9f} /* capital letter y with diaeresis */,
+        {0x017d, 0x8e} /* capital letter z with caron */,
+        {0x017e, 0x9e} /* small letter z with caron */,
+        {0x0192, 0x83} /* minuscule latine f hameçon */,
+        {0x02c6, 0x88} /* modificative accent circonflexe */,
+        {0x02dc, 0x98} /* tilde */,
+        {0x2013, 0x96} /* dash */,
+        {0x2014, 0x97} /* dash */,
+        {0x2018, 0x91} /* single quotation mark */,
+        {0x2019, 0x92} /* single quotation mark */,
+        {0x201a, 0x82} /* low-9 quotation mark */,
+        {0x201c, 0x93} /* double quotation mark */,
+        {0x201d, 0x94} /* double quotation mark */,
+        {0x201e, 0x84} /* low-9 quotation mark */,
+        {0x2020, 0x86} /* dagger */,
+        {0x2021, 0x87} /* dagger */,
+        {0x2022, 0x95} /* puce */,
+        {0x2026, 0x85} /* horizontal ellipsis */,
+        {0x2030, 0x89} /* mille sign */,
+        {0x2039, 0x8b} /* left-pointing angle quotation mark */,
+        {0x203a, 0x9b} /* right-pointing angle quotation mark */,
+        {0x20ac, 0x80} /* euro */,
+        {0x2122, 0x99} /* mark sign */
+};
+
+/*
+#define cet_ucs4_to_cp1252_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_cp1252_extra[cet_ucs4_to_cp1252_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_cp1252 =       /* defined in cet.h */
+{      
+       cet_cs_name_cp1252,             /* name of character set        */
+       cet_cs_alias_cp1252,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_cp1252,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_cp1252,            /* first non standard character */
+       cet_ucs4_cnt_cp1252,            /* number of values in table    */
+
+       cet_ucs4_to_cp1252_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_cp1252_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int cp1252_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x20ac,     -1, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 
+       0x02c6, 0x2030, 0x0160, 0x2039, 0x0152,     -1, 0x017d, 0x017e, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+       0x02dc, 0x2122, 0x0161, 0x203a, 0x0153,     -1,     -1, 0x0178, 
+       0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+       0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 
+       0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 
+       0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 
+       0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 
+       0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/cp1253.h b/gpsbabel/cet/cp1253.h
new file mode 100644 (file)
index 0000000..a62caf7
--- /dev/null
@@ -0,0 +1,219 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "CP1253" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef cp1253_h
+#define cp1253_h
+
+#define cet_cs_name_cp1253 "CP1253"
+
+const char *cet_cs_alias_cp1253[] = 
+{
+       "CP1253/CR-LF", "1253/CR-LF", "ms-greek", "windows-1253", "WIN-CP1253",
+       NULL
+};
+
+#define cet_ucs4_ofs_cp1253 128
+#define cet_ucs4_cnt_cp1253 127
+
+const int cet_ucs4_map_cp1253[cet_ucs4_cnt_cp1253] =
+{
+       0x20ac,     -1, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 
+           -1, 0x2030,     -1, 0x2039,     -1,     -1,     -1,     -1, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+           -1, 0x2122,     -1, 0x203a,     -1,     -1,     -1,     -1, 
+       0x00a0, 0x0385, 0x0386, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9,     -1, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x2015, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x00b5, 0x00b6, 0x00b7, 
+       0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, 
+       0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 
+       0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 
+       0x03a0, 0x03a1,     -1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 
+       0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, 
+       0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 
+       0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 
+       0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 
+       0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce
+};
+
+#define cet_ucs4_to_cp1253_ct 90
+
+const cet_ucs4_link_t cet_ucs4_to_cp1253_links[cet_ucs4_to_cp1253_ct] =
+{
+        {0x0192, 0x83} /* minuscule latine f hameçon */,
+        {0x0384, 0xb4} /* grec tonos */,
+        {0x0385, 0xa1} /* accent and diaeresis (tonos and dialytika) */,
+        {0x0386, 0xa2} /* capital letter alpha with acute */,
+        {0x0388, 0xb8} /* capital letter epsilon with acute */,
+        {0x0389, 0xb9} /* capital letter eta with acute */,
+        {0x038a, 0xba} /* capital letter iota with acute */,
+        {0x038c, 0xbc} /* capital letter omicron with acute */,
+        {0x038e, 0xbe} /* capital letter upsilon with acute */,
+        {0x038f, 0xbf} /* capital letter omega with acute */,
+        {0x0390, 0xc0} /* small letter iota with acute and diaeresis */,
+        {0x0391, 0xc1} /* capital letter alpha */,
+        {0x0392, 0xc2} /* capital letter beta */,
+        {0x0393, 0xc3} /* capital letter gamma */,
+        {0x0394, 0xc4} /* capital letter delta */,
+        {0x0395, 0xc5} /* capital letter epsilon */,
+        {0x0396, 0xc6} /* capital letter zeta */,
+        {0x0397, 0xc7} /* capital letter eta */,
+        {0x0398, 0xc8} /* capital letter theta */,
+        {0x0399, 0xc9} /* capital letter iota */,
+        {0x039a, 0xca} /* capital letter kappa */,
+        {0x039b, 0xcb} /* capital letter lamda */,
+        {0x039c, 0xcc} /* capital letter mu */,
+        {0x039d, 0xcd} /* capital letter nu */,
+        {0x039e, 0xce} /* capital letter xi */,
+        {0x039f, 0xcf} /* capital letter omicron */,
+        {0x03a0, 0xd0} /* capital letter pi */,
+        {0x03a1, 0xd1} /* capital letter rho */,
+        {0x03a3, 0xd3} /* capital letter sigma */,
+        {0x03a4, 0xd4} /* capital letter tau */,
+        {0x03a5, 0xd5} /* capital letter upsilon */,
+        {0x03a6, 0xd6} /* capital letter phi */,
+        {0x03a7, 0xd7} /* capital letter chi */,
+        {0x03a8, 0xd8} /* capital letter psi */,
+        {0x03a9, 0xd9} /* capital letter omega */,
+        {0x03aa, 0xda} /* capital letter iota with diaeresis */,
+        {0x03ab, 0xdb} /* capital letter upsilon with diaeresis */,
+        {0x03ac, 0xdc} /* small letter alpha with acute */,
+        {0x03ad, 0xdd} /* small letter epsilon with acute */,
+        {0x03ae, 0xde} /* small letter eta with acute */,
+        {0x03af, 0xdf} /* small letter iota with acute */,
+        {0x03b0, 0xe0} /* small letter upsilon with acute and diaeresis */,
+        {0x03b1, 0xe1} /* small letter alpha */,
+        {0x03b2, 0xe2} /* small letter beta */,
+        {0x03b3, 0xe3} /* small letter gamma */,
+        {0x03b4, 0xe4} /* small letter delta */,
+        {0x03b5, 0xe5} /* small letter epsilon */,
+        {0x03b6, 0xe6} /* small letter zeta */,
+        {0x03b7, 0xe7} /* small letter eta */,
+        {0x03b8, 0xe8} /* small letter theta */,
+        {0x03b9, 0xe9} /* small letter iota */,
+        {0x03ba, 0xea} /* small letter kappa */,
+        {0x03bb, 0xeb} /* small letter lamda */,
+        {0x03bc, 0xec} /* small letter mu */,
+        {0x03bd, 0xed} /* small letter nu */,
+        {0x03be, 0xee} /* small letter xi */,
+        {0x03bf, 0xef} /* small letter omicron */,
+        {0x03c0, 0xf0} /* small letter pi */,
+        {0x03c1, 0xf1} /* small letter rho */,
+        {0x03c2, 0xf2} /* small letter final sigma */,
+        {0x03c3, 0xf3} /* small letter sigma */,
+        {0x03c4, 0xf4} /* small letter tau */,
+        {0x03c5, 0xf5} /* small letter upsilon */,
+        {0x03c6, 0xf6} /* small letter phi */,
+        {0x03c7, 0xf7} /* small letter chi */,
+        {0x03c8, 0xf8} /* small letter psi */,
+        {0x03c9, 0xf9} /* small letter omega */,
+        {0x03ca, 0xfa} /* small letter iota with diaeresis */,
+        {0x03cb, 0xfb} /* small letter upsilon with diaeresis */,
+        {0x03cc, 0xfc} /* small letter omicron with acute */,
+        {0x03cd, 0xfd} /* small letter upsilon with acute */,
+        {0x03ce, 0xfe} /* small letter omega with acute */,
+        {0x2013, 0x96} /* dash */,
+        {0x2014, 0x97} /* dash */,
+        {0x2015, 0xaf} /* bar */,
+        {0x2018, 0x91} /* single quotation mark */,
+        {0x2019, 0x92} /* single quotation mark */,
+        {0x201a, 0x82} /* low-9 quotation mark */,
+        {0x201c, 0x93} /* double quotation mark */,
+        {0x201d, 0x94} /* double quotation mark */,
+        {0x201e, 0x84} /* low-9 quotation mark */,
+        {0x2020, 0x86} /* dagger */,
+        {0x2021, 0x87} /* dagger */,
+        {0x2022, 0x95} /* puce */,
+        {0x2026, 0x85} /* horizontal ellipsis */,
+        {0x2030, 0x89} /* mille sign */,
+        {0x2039, 0x8b} /* left-pointing angle quotation mark */,
+        {0x203a, 0x9b} /* right-pointing angle quotation mark */,
+        {0x20ac, 0x80} /* euro */,
+        {0x2122, 0x99} /* mark sign */
+};
+
+/*
+#define cet_ucs4_to_cp1253_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_cp1253_extra[cet_ucs4_to_cp1253_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_cp1253 =       /* defined in cet.h */
+{      
+       cet_cs_name_cp1253,             /* name of character set        */
+       cet_cs_alias_cp1253,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_cp1253,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_cp1253,            /* first non standard character */
+       cet_ucs4_cnt_cp1253,            /* number of values in table    */
+
+       cet_ucs4_to_cp1253_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_cp1253_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int cp1253_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x20ac,     -1, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 
+           -1, 0x2030,     -1, 0x2039,     -1,     -1,     -1,     -1, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+           -1, 0x2122,     -1, 0x203a,     -1,     -1,     -1,     -1, 
+       0x00a0, 0x0385, 0x0386, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9,     -1, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x2015, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x00b5, 0x00b6, 0x00b7, 
+       0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, 
+       0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 
+       0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 
+       0x03a0, 0x03a1,     -1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 
+       0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, 
+       0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 
+       0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 
+       0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 
+       0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/cp1254.h b/gpsbabel/cet/cp1254.h
new file mode 100644 (file)
index 0000000..3995e09
--- /dev/null
@@ -0,0 +1,163 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "CP1254" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef cp1254_h
+#define cp1254_h
+
+#define cet_cs_name_cp1254 "CP1254"
+
+const char *cet_cs_alias_cp1254[] = 
+{
+       "CP1254/CR-LF", "1254/CR-LF", "ms-turk", "windows-1254", "WIN-CP1254",
+       NULL
+};
+
+#define cet_ucs4_ofs_cp1254 128
+#define cet_ucs4_cnt_cp1254 128
+
+const int cet_ucs4_map_cp1254[cet_ucs4_cnt_cp1254] =
+{
+       0x20ac,     -1, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 
+       0x02c6, 0x2030, 0x0160, 0x2039, 0x0152,     -1,     -1,     -1, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+       0x02dc, 0x2122, 0x0161, 0x203a, 0x0153,     -1,     -1, 0x0178, 
+       0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+       0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 
+       0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 
+       0x00e8, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, 
+       0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 
+       0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff
+};
+
+#define cet_ucs4_to_cp1254_ct 34
+
+const cet_ucs4_link_t cet_ucs4_to_cp1254_links[cet_ucs4_to_cp1254_ct] =
+{
+        {0x0117, 0xec} /* small letter e with dot above */,
+        {0x0119, 0xea} /* small letter e with ogonek */,
+        {0x011e, 0xd0} /* capital letter g with breve */,
+        {0x011f, 0xf0} /* small letter g with breve */,
+        {0x012b, 0xef} /* small letter i with macron */,
+        {0x0130, 0xdd} /* capital letter i with dot above */,
+        {0x0131, 0xfd} /* small letter i dotless */,
+        {0x0152, 0x8c} /* capital ligature oe */,
+        {0x0153, 0x9c} /* small ligature oe */,
+        {0x015e, 0xde} /* capital letter s with cedilla */,
+        {0x015f, 0xfe} /* small letter s with cedilla */,
+        {0x0160, 0x8a} /* capital letter s with caron */,
+        {0x0161, 0x9a} /* small letter s with caron */,
+        {0x0178, 0x9f} /* capital letter y with diaeresis */,
+        {0x0192, 0x83} /* minuscule latine f hameçon */,
+        {0x02c6, 0x88} /* modificative accent circonflexe */,
+        {0x02dc, 0x98} /* tilde */,
+        {0x2013, 0x96} /* dash */,
+        {0x2014, 0x97} /* dash */,
+        {0x2018, 0x91} /* single quotation mark */,
+        {0x2019, 0x92} /* single quotation mark */,
+        {0x201a, 0x82} /* low-9 quotation mark */,
+        {0x201c, 0x93} /* double quotation mark */,
+        {0x201d, 0x94} /* double quotation mark */,
+        {0x201e, 0x84} /* low-9 quotation mark */,
+        {0x2020, 0x86} /* dagger */,
+        {0x2021, 0x87} /* dagger */,
+        {0x2022, 0x95} /* puce */,
+        {0x2026, 0x85} /* horizontal ellipsis */,
+        {0x2030, 0x89} /* mille sign */,
+        {0x2039, 0x8b} /* left-pointing angle quotation mark */,
+        {0x203a, 0x9b} /* right-pointing angle quotation mark */,
+        {0x20ac, 0x80} /* euro */,
+        {0x2122, 0x99} /* mark sign */
+};
+
+/*
+#define cet_ucs4_to_cp1254_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_cp1254_extra[cet_ucs4_to_cp1254_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_cp1254 =       /* defined in cet.h */
+{      
+       cet_cs_name_cp1254,             /* name of character set        */
+       cet_cs_alias_cp1254,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_cp1254,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_cp1254,            /* first non standard character */
+       cet_ucs4_cnt_cp1254,            /* number of values in table    */
+
+       cet_ucs4_to_cp1254_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_cp1254_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int cp1254_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x20ac,     -1, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 
+       0x02c6, 0x2030, 0x0160, 0x2039, 0x0152,     -1,     -1,     -1, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+       0x02dc, 0x2122, 0x0161, 0x203a, 0x0153,     -1,     -1, 0x0178, 
+       0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+       0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 
+       0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 
+       0x00e8, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, 
+       0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 
+       0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/cp1255.h b/gpsbabel/cet/cp1255.h
new file mode 100644 (file)
index 0000000..1554174
--- /dev/null
@@ -0,0 +1,180 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "CP1255" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef cp1255_h
+#define cp1255_h
+
+#define cet_cs_name_cp1255 "CP1255"
+
+const char *cet_cs_alias_cp1255[] = 
+{
+       "CP1255/CR-LF", "1255/CR-LF", "ms-hebr", "windows-1255", "WIN-CP1255",
+       NULL
+};
+
+#define cet_ucs4_ofs_cp1255 128
+#define cet_ucs4_cnt_cp1255 127
+
+const int cet_ucs4_map_cp1255[cet_ucs4_cnt_cp1255] =
+{
+       0x20ac,     -1, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 
+           -1, 0x2030,     -1, 0x2039,     -1,     -1,     -1,     -1, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+           -1, 0x2122,     -1, 0x203a,     -1,     -1,     -1,     -1, 
+       0x00a0,     -1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x203e, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1, 0x2017, 
+       0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 
+       0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 
+       0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 
+       0x05e8, 0x05e9, 0x05ea,     -1,     -1, 0x200e, 0x200f
+};
+
+#define cet_ucs4_to_cp1255_ct 51
+
+const cet_ucs4_link_t cet_ucs4_to_cp1255_links[cet_ucs4_to_cp1255_ct] =
+{
+        {0x00d7, 0xaa} /* sign */,
+        {0x00f7, 0xba} /* sign */,
+        {0x0192, 0x83} /* minuscule latine f hameçon */,
+        {0x05d0, 0xe0} /* letter alef */,
+        {0x05d1, 0xe1} /* letter bet */,
+        {0x05d2, 0xe2} /* letter gimel */,
+        {0x05d3, 0xe3} /* letter dalet */,
+        {0x05d4, 0xe4} /* letter he */,
+        {0x05d5, 0xe5} /* letter vav */,
+        {0x05d6, 0xe6} /* letter zayin */,
+        {0x05d7, 0xe7} /* letter het */,
+        {0x05d8, 0xe8} /* letter tet */,
+        {0x05d9, 0xe9} /* letter yod */,
+        {0x05da, 0xea} /* letter final kaf */,
+        {0x05db, 0xeb} /* letter kaf */,
+        {0x05dc, 0xec} /* letter lamed */,
+        {0x05dd, 0xed} /* letter final mem */,
+        {0x05de, 0xee} /* letter mem */,
+        {0x05df, 0xef} /* letter final nun */,
+        {0x05e0, 0xf0} /* letter nun */,
+        {0x05e1, 0xf1} /* letter samekh */,
+        {0x05e2, 0xf2} /* letter ayin */,
+        {0x05e3, 0xf3} /* letter final pe */,
+        {0x05e4, 0xf4} /* letter pe */,
+        {0x05e5, 0xf5} /* letter final tsadi */,
+        {0x05e6, 0xf6} /* letter tsadi */,
+        {0x05e7, 0xf7} /* letter qof */,
+        {0x05e8, 0xf8} /* letter resh */,
+        {0x05e9, 0xf9} /* letter shin */,
+        {0x05ea, 0xfa} /* letter tav */,
+        {0x200e, 0xfd} /* gauche-à-droite */,
+        {0x200f, 0xfe} /* droite-à-gauche */,
+        {0x2013, 0x96} /* dash */,
+        {0x2014, 0x97} /* dash */,
+        {0x2017, 0xdf} /* low line */,
+        {0x2018, 0x91} /* single quotation mark */,
+        {0x2019, 0x92} /* single quotation mark */,
+        {0x201a, 0x82} /* low-9 quotation mark */,
+        {0x201c, 0x93} /* double quotation mark */,
+        {0x201d, 0x94} /* double quotation mark */,
+        {0x201e, 0x84} /* low-9 quotation mark */,
+        {0x2020, 0x86} /* dagger */,
+        {0x2021, 0x87} /* dagger */,
+        {0x2022, 0x95} /* puce */,
+        {0x2026, 0x85} /* horizontal ellipsis */,
+        {0x2030, 0x89} /* mille sign */,
+        {0x2039, 0x8b} /* left-pointing angle quotation mark */,
+        {0x203a, 0x9b} /* right-pointing angle quotation mark */,
+        {0x203e, 0xaf} /* overline */,
+        {0x20ac, 0x80} /* euro */,
+        {0x2122, 0x99} /* mark sign */
+};
+
+/*
+#define cet_ucs4_to_cp1255_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_cp1255_extra[cet_ucs4_to_cp1255_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_cp1255 =       /* defined in cet.h */
+{      
+       cet_cs_name_cp1255,             /* name of character set        */
+       cet_cs_alias_cp1255,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_cp1255,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_cp1255,            /* first non standard character */
+       cet_ucs4_cnt_cp1255,            /* number of values in table    */
+
+       cet_ucs4_to_cp1255_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_cp1255_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int cp1255_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x20ac,     -1, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 
+           -1, 0x2030,     -1, 0x2039,     -1,     -1,     -1,     -1, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+           -1, 0x2122,     -1, 0x203a,     -1,     -1,     -1,     -1, 
+       0x00a0,     -1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x203e, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1, 0x2017, 
+       0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 
+       0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 
+       0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 
+       0x05e8, 0x05e9, 0x05ea,     -1,     -1, 0x200e, 0x200f,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/cp1256.h b/gpsbabel/cet/cp1256.h
new file mode 100644 (file)
index 0000000..52a554e
--- /dev/null
@@ -0,0 +1,210 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "CP1256" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef cp1256_h
+#define cp1256_h
+
+#define cet_cs_name_cp1256 "CP1256"
+
+const char *cet_cs_alias_cp1256[] = 
+{
+       "CP1256/CR-LF", "1256/CR-LF", "ms-arab", "windows-1256", "WIN-CP1256",
+       NULL
+};
+
+#define cet_ucs4_ofs_cp1256 128
+#define cet_ucs4_cnt_cp1256 128
+
+const int cet_ucs4_map_cp1256[cet_ucs4_cnt_cp1256] =
+{
+       0x20ac, 0x0660, 0x201a, 0x0661, 0x201e, 0x2026, 0x2020, 0x2021, 
+       0x0662, 0x0663, 0x0664, 0x2039, 0x0665, 0x0666, 0x0667, 0x0668, 
+       0x0669, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+       0x061b, 0x2122, 0x061f, 0x203a, 0x0621, 0x0622, 0x0623, 0x0178, 
+       0x00a0, 0x0624, 0x0625, 0x00a3, 0x00a4, 0x0626, 0x00a6, 0x00a7, 
+       0x0627, 0x00a9, 0x0628, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x067e, 
+       0x00b0, 0x00b1, 0x0629, 0x062a, 0x062b, 0x00b5, 0x00b6, 0x00b7, 
+       0x062c, 0x0686, 0x062d, 0x00bb, 0x062e, 0x062f, 0x0630, 0x0631, 
+       0x00c0, 0x0632, 0x00c2, 0x0698, 0x0633, 0x0634, 0x0635, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x0636, 0x0637, 0x00ce, 0x00cf, 
+       0x3113, 0x0639, 0x063a, 0x0640, 0x00d4, 0x0641, 0x0642, 0x00d7, 
+       0x0643, 0x00d9, 0x06af, 0x00db, 0x00dc, 0x0644, 0x0645, 0x0646, 
+       0x00e0, 0x0647, 0x00e2, 0x0681, 0x0648, 0x0649, 0x064a, 0x00e7, 
+       0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x064b, 0x064c, 0x00ee, 0x00ef, 
+       0x064d, 0x064e, 0x064f, 0x0650, 0x00f4, 0x0651, 0x0652, 0x00f7, 
+           -1, 0x00f9,     -1, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x00ff
+};
+
+#define cet_ucs4_to_cp1256_ct 81
+
+const cet_ucs4_link_t cet_ucs4_to_cp1256_links[cet_ucs4_to_cp1256_ct] =
+{
+        {0x0178, 0x9f} /* capital letter y with diaeresis */,
+        {0x061b, 0x98} /* semicolon */,
+        {0x061f, 0x9a} /* question mark */,
+        {0x0621, 0x9c} /* letter hamza */,
+        {0x0622, 0x9d} /* letter alef with madda above */,
+        {0x0623, 0x9e} /* letter alef with hamza above */,
+        {0x0624, 0xa1} /* letter waw with hamza above */,
+        {0x0625, 0xa2} /* letter alef with hamza below */,
+        {0x0626, 0xa5} /* letter yeh with hamza above */,
+        {0x0627, 0xa8} /* letter alef */,
+        {0x0628, 0xaa} /* letter beh */,
+        {0x0629, 0xb2} /* letter teh marbuta */,
+        {0x062a, 0xb3} /* letter teh */,
+        {0x062b, 0xb4} /* letter theh */,
+        {0x062c, 0xb8} /* letter jeem */,
+        {0x062d, 0xba} /* letter hah */,
+        {0x062e, 0xbc} /* letter khah */,
+        {0x062f, 0xbd} /* letter dal */,
+        {0x0630, 0xbe} /* letter thal */,
+        {0x0631, 0xbf} /* letter reh */,
+        {0x0632, 0xc1} /* letter zain */,
+        {0x0633, 0xc4} /* letter seen */,
+        {0x0634, 0xc5} /* letter sheen */,
+        {0x0635, 0xc6} /* letter sad */,
+        {0x0636, 0xcc} /* letter dad */,
+        {0x0637, 0xcd} /* letter tah */,
+        {0x0639, 0xd1} /* letter ain */,
+        {0x063a, 0xd2} /* letter ghain */,
+        {0x0640, 0xd3} /* tatweel */,
+        {0x0641, 0xd5} /* letter feh */,
+        {0x0642, 0xd6} /* letter qaf */,
+        {0x0643, 0xd8} /* letter kaf */,
+        {0x0644, 0xdd} /* letter lam */,
+        {0x0645, 0xde} /* letter meem */,
+        {0x0646, 0xdf} /* letter noon */,
+        {0x0647, 0xe1} /* letter heh */,
+        {0x0648, 0xe4} /* letter waw */,
+        {0x0649, 0xe5} /* letter alef maksura */,
+        {0x064a, 0xe6} /* letter yeh */,
+        {0x064b, 0xec} /* fathatan */,
+        {0x064c, 0xed} /* dammatan */,
+        {0x064d, 0xf0} /* kasratan */,
+        {0x064e, 0xf1} /* fatha */,
+        {0x064f, 0xf2} /* damma */,
+        {0x0650, 0xf3} /* kasra */,
+        {0x0651, 0xf5} /* shadda */,
+        {0x0652, 0xf6} /* sukun */,
+        {0x0660, 0x81} /* arabic-indic digit zero */,
+        {0x0661, 0x83} /* arabic-indic digit one */,
+        {0x0662, 0x88} /* arabic-indic digit two */,
+        {0x0663, 0x89} /* arabic-indic digit three */,
+        {0x0664, 0x8a} /* arabic-indic digit four */,
+        {0x0665, 0x8c} /* arabic-indic digit five */,
+        {0x0666, 0x8d} /* arabic-indic digit six */,
+        {0x0667, 0x8e} /* arabic-indic digit seven */,
+        {0x0668, 0x8f} /* arabic-indic digit eight */,
+        {0x0669, 0x90} /* arabic-indic digit nine */,
+        {0x067e, 0xaf} /* letter peh */,
+        {0x0681, 0xe3} /* arabe ha' hamza en chef */,
+        {0x0686, 0xb9} /* arabe tchim' */,
+        {0x0698, 0xc3} /* arabe ja' */,
+        {0x06af, 0xda} /* letter gaf */,
+        {0x200e, 0xfd} /* gauche-à-droite */,
+        {0x200f, 0xfe} /* droite-à-gauche */,
+        {0x2013, 0x96} /* dash */,
+        {0x2014, 0x97} /* dash */,
+        {0x2018, 0x91} /* single quotation mark */,
+        {0x2019, 0x92} /* single quotation mark */,
+        {0x201a, 0x82} /* low-9 quotation mark */,
+        {0x201c, 0x93} /* double quotation mark */,
+        {0x201d, 0x94} /* double quotation mark */,
+        {0x201e, 0x84} /* low-9 quotation mark */,
+        {0x2020, 0x86} /* dagger */,
+        {0x2021, 0x87} /* dagger */,
+        {0x2022, 0x95} /* puce */,
+        {0x2026, 0x85} /* horizontal ellipsis */,
+        {0x2039, 0x8b} /* left-pointing angle quotation mark */,
+        {0x203a, 0x9b} /* right-pointing angle quotation mark */,
+        {0x20ac, 0x80} /* euro */,
+        {0x2122, 0x99} /* mark sign */,
+        {0x3113, 0xd0} /* letter zh */
+};
+
+/*
+#define cet_ucs4_to_cp1256_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_cp1256_extra[cet_ucs4_to_cp1256_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_cp1256 =       /* defined in cet.h */
+{      
+       cet_cs_name_cp1256,             /* name of character set        */
+       cet_cs_alias_cp1256,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_cp1256,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_cp1256,            /* first non standard character */
+       cet_ucs4_cnt_cp1256,            /* number of values in table    */
+
+       cet_ucs4_to_cp1256_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_cp1256_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int cp1256_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x20ac, 0x0660, 0x201a, 0x0661, 0x201e, 0x2026, 0x2020, 0x2021, 
+       0x0662, 0x0663, 0x0664, 0x2039, 0x0665, 0x0666, 0x0667, 0x0668, 
+       0x0669, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+       0x061b, 0x2122, 0x061f, 0x203a, 0x0621, 0x0622, 0x0623, 0x0178, 
+       0x00a0, 0x0624, 0x0625, 0x00a3, 0x00a4, 0x0626, 0x00a6, 0x00a7, 
+       0x0627, 0x00a9, 0x0628, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x067e, 
+       0x00b0, 0x00b1, 0x0629, 0x062a, 0x062b, 0x00b5, 0x00b6, 0x00b7, 
+       0x062c, 0x0686, 0x062d, 0x00bb, 0x062e, 0x062f, 0x0630, 0x0631, 
+       0x00c0, 0x0632, 0x00c2, 0x0698, 0x0633, 0x0634, 0x0635, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x0636, 0x0637, 0x00ce, 0x00cf, 
+       0x3113, 0x0639, 0x063a, 0x0640, 0x00d4, 0x0641, 0x0642, 0x00d7, 
+       0x0643, 0x00d9, 0x06af, 0x00db, 0x00dc, 0x0644, 0x0645, 0x0646, 
+       0x00e0, 0x0647, 0x00e2, 0x0681, 0x0648, 0x0649, 0x064a, 0x00e7, 
+       0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x064b, 0x064c, 0x00ee, 0x00ef, 
+       0x064d, 0x064e, 0x064f, 0x0650, 0x00f4, 0x0651, 0x0652, 0x00f7, 
+           -1, 0x00f9,     -1, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x00ff
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/cp1257.h b/gpsbabel/cet/cp1257.h
new file mode 100644 (file)
index 0000000..070321a
--- /dev/null
@@ -0,0 +1,198 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "CP1257" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef cp1257_h
+#define cp1257_h
+
+#define cet_cs_name_cp1257 "CP1257"
+
+const char *cet_cs_alias_cp1257[] = 
+{
+       "CP1257/CR-LF", "1257/CR-LF", "WinBaltRim", "windows-1257", "WIN-CP1257",
+       NULL
+};
+
+#define cet_ucs4_ofs_cp1257 128
+#define cet_ucs4_cnt_cp1257 127
+
+const int cet_ucs4_map_cp1257[cet_ucs4_cnt_cp1257] =
+{
+       0x20ac,     -1, 0x201a,     -1, 0x201e, 0x2026, 0x2020, 0x2021, 
+           -1, 0x2030,     -1, 0x2039,     -1,     -1,     -1,     -1, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+           -1, 0x2122,     -1, 0x203a,     -1,     -1,     -1,     -1, 
+       0x00a0,     -1, 0x00a2, 0x00a3, 0x00a4,     -1, 0x00a6, 0x00a7, 
+       0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3,     -1, 0x00b5, 0x00b6, 0x00b7, 
+       0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, 
+       0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, 
+       0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, 
+       0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, 
+       0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, 
+       0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, 
+       0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, 
+       0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, 
+       0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e
+};
+
+#define cet_ucs4_to_cp1257_ct 69
+
+const cet_ucs4_link_t cet_ucs4_to_cp1257_links[cet_ucs4_to_cp1257_ct] =
+{
+        {0x00c6, 0xaf} /* capital letter ae */,
+        {0x00d8, 0xa8} /* capital letter o with stroke */,
+        {0x00e6, 0xbf} /* small letter ae */,
+        {0x00f8, 0xb8} /* small letter o with stroke */,
+        {0x0100, 0xc2} /* capital letter a with macron */,
+        {0x0101, 0xe2} /* small letter a with macron */,
+        {0x0104, 0xc0} /* capital letter a with ogonek */,
+        {0x0105, 0xe0} /* small letter a with ogonek */,
+        {0x0106, 0xc3} /* capital letter c with acute */,
+        {0x0107, 0xe3} /* small letter c with acute */,
+        {0x010c, 0xc8} /* capital letter c with caron */,
+        {0x010d, 0xe8} /* small letter c with caron */,
+        {0x0112, 0xc7} /* capital letter e with macron */,
+        {0x0113, 0xe7} /* small letter e with macron */,
+        {0x0116, 0xcb} /* capital letter e with dot above */,
+        {0x0117, 0xeb} /* small letter e with dot above */,
+        {0x0118, 0xc6} /* capital letter e with ogonek */,
+        {0x0119, 0xe6} /* small letter e with ogonek */,
+        {0x0122, 0xcc} /* capital letter g with cedilla */,
+        {0x0123, 0xec} /* small letter g with cedilla */,
+        {0x012a, 0xce} /* capital letter i with macron */,
+        {0x012b, 0xee} /* small letter i with macron */,
+        {0x012e, 0xc1} /* capital letter i with ogonek */,
+        {0x012f, 0xe1} /* small letter i with ogonek */,
+        {0x0136, 0xcd} /* capital letter k with cedilla */,
+        {0x0137, 0xed} /* small letter k with cedilla */,
+        {0x013b, 0xcf} /* capital letter l with cedilla */,
+        {0x013c, 0xef} /* small letter l with cedilla */,
+        {0x0141, 0xd9} /* capital letter l with stroke */,
+        {0x0142, 0xf9} /* small letter l with stroke */,
+        {0x0143, 0xd1} /* capital letter n with acute */,
+        {0x0144, 0xf1} /* small letter n with acute */,
+        {0x0145, 0xd2} /* capital letter n with cedilla */,
+        {0x0146, 0xf2} /* small letter n with cedilla */,
+        {0x014c, 0xd4} /* capital letter o with macron */,
+        {0x014d, 0xf4} /* small letter o with macron */,
+        {0x0156, 0xaa} /* capital letter r with cedilla */,
+        {0x0157, 0xba} /* small letter r with cedilla */,
+        {0x015a, 0xda} /* capital letter s with acute */,
+        {0x015b, 0xfa} /* small letter s with acute */,
+        {0x0160, 0xd0} /* capital letter s with caron */,
+        {0x0161, 0xf0} /* small letter s with caron */,
+        {0x016a, 0xdb} /* capital letter u with macron */,
+        {0x016b, 0xfb} /* small letter u with macron */,
+        {0x0172, 0xd8} /* capital letter u with ogonek */,
+        {0x0173, 0xf8} /* small letter u with ogonek */,
+        {0x0179, 0xca} /* capital letter z with acute */,
+        {0x017a, 0xea} /* small letter z with acute */,
+        {0x017b, 0xdd} /* capital letter z with dot above */,
+        {0x017c, 0xfd} /* small letter z with dot above */,
+        {0x017d, 0xde} /* capital letter z with caron */,
+        {0x017e, 0xfe} /* small letter z with caron */,
+        {0x2013, 0x96} /* dash */,
+        {0x2014, 0x97} /* dash */,
+        {0x2018, 0x91} /* single quotation mark */,
+        {0x2019, 0x92} /* single quotation mark */,
+        {0x201a, 0x82} /* low-9 quotation mark */,
+        {0x201c, 0x93} /* double quotation mark */,
+        {0x201d, 0x94} /* double quotation mark */,
+        {0x201e, 0x84} /* low-9 quotation mark */,
+        {0x2020, 0x86} /* dagger */,
+        {0x2021, 0x87} /* dagger */,
+        {0x2022, 0x95} /* puce */,
+        {0x2026, 0x85} /* horizontal ellipsis */,
+        {0x2030, 0x89} /* mille sign */,
+        {0x2039, 0x8b} /* left-pointing angle quotation mark */,
+        {0x203a, 0x9b} /* right-pointing angle quotation mark */,
+        {0x20ac, 0x80} /* euro */,
+        {0x2122, 0x99} /* mark sign */
+};
+
+/*
+#define cet_ucs4_to_cp1257_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_cp1257_extra[cet_ucs4_to_cp1257_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_cp1257 =       /* defined in cet.h */
+{      
+       cet_cs_name_cp1257,             /* name of character set        */
+       cet_cs_alias_cp1257,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_cp1257,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_cp1257,            /* first non standard character */
+       cet_ucs4_cnt_cp1257,            /* number of values in table    */
+
+       cet_ucs4_to_cp1257_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_cp1257_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int cp1257_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x20ac,     -1, 0x201a,     -1, 0x201e, 0x2026, 0x2020, 0x2021, 
+           -1, 0x2030,     -1, 0x2039,     -1,     -1,     -1,     -1, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+           -1, 0x2122,     -1, 0x203a,     -1,     -1,     -1,     -1, 
+       0x00a0,     -1, 0x00a2, 0x00a3, 0x00a4,     -1, 0x00a6, 0x00a7, 
+       0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3,     -1, 0x00b5, 0x00b6, 0x00b7, 
+       0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, 
+       0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, 
+       0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, 
+       0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, 
+       0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, 
+       0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, 
+       0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, 
+       0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, 
+       0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/csa_z243_4_1985_1.h b/gpsbabel/cet/csa_z243_4_1985_1.h
new file mode 100644 (file)
index 0000000..9c24e5c
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "CSA_Z243.4-1985-1" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef csa_z243_4_1985_1_h
+#define csa_z243_4_1985_1_h
+
+#define cet_cs_name_csa_z243_4_1985_1 "CSA_Z243.4-1985-1"
+
+const char *cet_cs_alias_csa_z243_4_1985_1[] = 
+{
+       "CSA_Z243.4-1985-1", "ca", "csa7-1", "ISO646-CA", 
+       "iso-ir-121", NULL
+};
+
+#define cet_ucs4_ofs_csa_z243_4_1985_1 64
+#define cet_ucs4_cnt_csa_z243_4_1985_1 64
+
+const int cet_ucs4_map_csa_z243_4_1985_1[cet_ucs4_cnt_csa_z243_4_1985_1] =
+{
+       0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00e2, 0x00e7, 0x00ea, 0x00ee, 0x005f, 
+       0x00f4, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e9, 0x00f9, 0x00e8, 0x00fb, 0x007f
+};
+
+#define cet_ucs4_to_csa_z243_4_1985_1_ct 10
+
+const cet_ucs4_link_t cet_ucs4_to_csa_z243_4_1985_1_links[cet_ucs4_to_csa_z243_4_1985_1_ct] =
+{
+        {0x00e0, 0x40} /* small letter a with grave */,
+        {0x00e2, 0x5b} /* small letter a with circumflex */,
+        {0x00e7, 0x5c} /* small letter c with cedilla */,
+        {0x00e8, 0x7d} /* small letter e with grave */,
+        {0x00e9, 0x7b} /* small letter e with acute */,
+        {0x00ea, 0x5d} /* small letter e with circumflex */,
+        {0x00ee, 0x5e} /* small letter i with circumflex */,
+        {0x00f4, 0x60} /* small letter o with circumflex */,
+        {0x00f9, 0x7c} /* small letter u with grave */,
+        {0x00fb, 0x7e} /* small letter u with circumflex */
+};
+
+/*
+#define cet_ucs4_to_csa_z243_4_1985_1_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_csa_z243_4_1985_1_extra[cet_ucs4_to_csa_z243_4_1985_1_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_csa_z243_4_1985_1 =    /* defined in cet.h */
+{      
+       cet_cs_name_csa_z243_4_1985_1,          /* name of character set        */
+       cet_cs_alias_csa_z243_4_1985_1,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_csa_z243_4_1985_1,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_csa_z243_4_1985_1,         /* first non standard character */
+       cet_ucs4_cnt_csa_z243_4_1985_1,         /* number of values in table    */
+
+       cet_ucs4_to_csa_z243_4_1985_1_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_csa_z243_4_1985_1_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int csa_z243_4_1985_1_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00e2, 0x00e7, 0x00ea, 0x00ee, 0x005f, 
+       0x00f4, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e9, 0x00f9, 0x00e8, 0x00fb, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/csa_z243_4_1985_2.h b/gpsbabel/cet/csa_z243_4_1985_2.h
new file mode 100644 (file)
index 0000000..0d5e54b
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "CSA_Z243.4-1985-2" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef csa_z243_4_1985_2_h
+#define csa_z243_4_1985_2_h
+
+#define cet_cs_name_csa_z243_4_1985_2 "CSA_Z243.4-1985-2"
+
+const char *cet_cs_alias_csa_z243_4_1985_2[] = 
+{
+       "CSA_Z243.4-1985-2", "csa7-2", "ISO646-CA2", "iso-ir-122",
+       NULL
+};
+
+#define cet_ucs4_ofs_csa_z243_4_1985_2 64
+#define cet_ucs4_cnt_csa_z243_4_1985_2 64
+
+const int cet_ucs4_map_csa_z243_4_1985_2[cet_ucs4_cnt_csa_z243_4_1985_2] =
+{
+       0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00e2, 0x00e7, 0x00ea, 0x00c9, 0x005f, 
+       0x00f4, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e9, 0x00f9, 0x00e8, 0x00fb, 0x007f
+};
+
+#define cet_ucs4_to_csa_z243_4_1985_2_ct 10
+
+const cet_ucs4_link_t cet_ucs4_to_csa_z243_4_1985_2_links[cet_ucs4_to_csa_z243_4_1985_2_ct] =
+{
+        {0x00c9, 0x5e} /* capital letter e with acute */,
+        {0x00e0, 0x40} /* small letter a with grave */,
+        {0x00e2, 0x5b} /* small letter a with circumflex */,
+        {0x00e7, 0x5c} /* small letter c with cedilla */,
+        {0x00e8, 0x7d} /* small letter e with grave */,
+        {0x00e9, 0x7b} /* small letter e with acute */,
+        {0x00ea, 0x5d} /* small letter e with circumflex */,
+        {0x00f4, 0x60} /* small letter o with circumflex */,
+        {0x00f9, 0x7c} /* small letter u with grave */,
+        {0x00fb, 0x7e} /* small letter u with circumflex */
+};
+
+/*
+#define cet_ucs4_to_csa_z243_4_1985_2_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_csa_z243_4_1985_2_extra[cet_ucs4_to_csa_z243_4_1985_2_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_csa_z243_4_1985_2 =    /* defined in cet.h */
+{      
+       cet_cs_name_csa_z243_4_1985_2,          /* name of character set        */
+       cet_cs_alias_csa_z243_4_1985_2,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_csa_z243_4_1985_2,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_csa_z243_4_1985_2,         /* first non standard character */
+       cet_ucs4_cnt_csa_z243_4_1985_2,         /* number of values in table    */
+
+       cet_ucs4_to_csa_z243_4_1985_2_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_csa_z243_4_1985_2_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int csa_z243_4_1985_2_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00e2, 0x00e7, 0x00ea, 0x00c9, 0x005f, 
+       0x00f4, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e9, 0x00f9, 0x00e8, 0x00fb, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/csa_z243_4_1985_gr.h b/gpsbabel/cet/csa_z243_4_1985_gr.h
new file mode 100644 (file)
index 0000000..32bd605
--- /dev/null
@@ -0,0 +1,206 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "CSA_Z243.4-1985-gr" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef csa_z243_4_1985_gr_h
+#define csa_z243_4_1985_gr_h
+
+#define cet_cs_name_csa_z243_4_1985_gr "CSA_Z243.4-1985-gr"
+
+const char *cet_cs_alias_csa_z243_4_1985_gr[] = 
+{
+       "CSA_Z243.4-1985-gr", "iso-ir-123", NULL
+};
+
+#define cet_ucs4_ofs_csa_z243_4_1985_gr 162
+#define cet_ucs4_cnt_csa_z243_4_1985_gr 94
+
+const int cet_ucs4_map_csa_z243_4_1985_gr[cet_ucs4_cnt_csa_z243_4_1985_gr] =
+{
+       0x00a8, 0x00a3, 0x00a2, 0x00a5, 0x00b1, 0x00b4, 0x207d, 0x207e, 
+       0x00bd, 0x207a, 0x00b8, 0x00ad, 0x00b7, 0x207b, 0x2070, 0x00b9, 
+       0x00b2, 0x00b3, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078, 0x2079, 
+       0x00bc, 0x00be, 0x21d0, 0x2260, 0x2265, 0x00bf, 0x00c0, 0x00c1, 
+       0x00c2, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cd, 0x00ce, 
+       0x00cf, 0x00d1, 0x00d3, 0x00d4, 0x00d9, 0x00da, 0x00db, 0x00dc, 
+       0x00ae, 0x00a7, 0x00b6, 0x00b5, 0x00aa, 0x00ba, 0x2018, 0x2019, 
+       0x201c, 0x201d, 0x00ab, 0x00bb, 0x00b0, 0x00a6, 0x00e0, 0x00e1, 
+       0x00e2, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ed, 0x00ee, 
+       0x00ef, 0x00f1, 0x00f3, 0x00f4, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 
+       0x00a9, 0x2500, 0x2502, 0x2514, 0x2518, 0x2510, 0x250c, 0x251c, 
+       0x2534, 0x2524, 0x252c, 0x253c, 0x00ac, 0x2588
+};
+
+#define cet_ucs4_to_csa_z243_4_1985_gr_ct 82
+
+const cet_ucs4_link_t cet_ucs4_to_csa_z243_4_1985_gr_links[cet_ucs4_to_csa_z243_4_1985_gr_ct] =
+{
+        {0x00a2, 0xa4} /* sign */,
+        {0x00a6, 0xdf} /* bar */,
+        {0x00a7, 0xd3} /* sign */,
+        {0x00a8, 0xa2} /* diaeresis */,
+        {0x00a9, 0xf2} /* sign */,
+        {0x00aa, 0xd6} /* ordinal indicator */,
+        {0x00ab, 0xdc} /* double angle quotation mark */,
+        {0x00ac, 0xfe} /* sign */,
+        {0x00ae, 0xd2} /* sign */,
+        {0x00b0, 0xde} /* sign */,
+        {0x00b1, 0xa6} /* sign */,
+        {0x00b4, 0xa7} /* accent */,
+        {0x00b5, 0xd5} /* sign */,
+        {0x00b6, 0xd4} /* sign */,
+        {0x00b7, 0xae} /* dot */,
+        {0x00b8, 0xac} /* cedilla */,
+        {0x00b9, 0xb1} /* one */,
+        {0x00ba, 0xd7} /* ordinal indicator */,
+        {0x00bb, 0xdd} /* double angle quotation mark */,
+        {0x00bc, 0xba} /* fraction one quarter */,
+        {0x00bd, 0xaa} /* fraction one half */,
+        {0x00be, 0xbb} /* fraction three quarters */,
+        {0x00c7, 0xc3} /* capital letter c with cedilla */,
+        {0x00c8, 0xc4} /* capital letter e with grave */,
+        {0x00c9, 0xc5} /* capital letter e with acute */,
+        {0x00ca, 0xc6} /* capital letter e with circumflex */,
+        {0x00cb, 0xc7} /* capital letter e with diaeresis */,
+        {0x00cd, 0xc8} /* capital letter i with acute */,
+        {0x00ce, 0xc9} /* capital letter i with circumflex */,
+        {0x00cf, 0xca} /* capital letter i with diaeresis */,
+        {0x00d1, 0xcb} /* capital letter n with tilde */,
+        {0x00d3, 0xcc} /* capital letter o with acute */,
+        {0x00d4, 0xcd} /* capital letter o with circumflex */,
+        {0x00d9, 0xce} /* capital letter u with grave */,
+        {0x00da, 0xcf} /* capital letter u with acute */,
+        {0x00db, 0xd0} /* capital letter u with circumflex */,
+        {0x00dc, 0xd1} /* capital letter u with diaeresis */,
+        {0x00e7, 0xe3} /* small letter c with cedilla */,
+        {0x00e8, 0xe4} /* small letter e with grave */,
+        {0x00e9, 0xe5} /* small letter e with acute */,
+        {0x00ea, 0xe6} /* small letter e with circumflex */,
+        {0x00eb, 0xe7} /* small letter e with diaeresis */,
+        {0x00ed, 0xe8} /* small letter i with acute */,
+        {0x00ee, 0xe9} /* small letter i with circumflex */,
+        {0x00ef, 0xea} /* small letter i with diaeresis */,
+        {0x00f1, 0xeb} /* small letter n with tilde */,
+        {0x00f3, 0xec} /* small letter o with acute */,
+        {0x00f4, 0xed} /* small letter o with circumflex */,
+        {0x00f9, 0xee} /* small letter u with grave */,
+        {0x00fa, 0xef} /* small letter u with acute */,
+        {0x00fb, 0xf0} /* small letter u with circumflex */,
+        {0x00fc, 0xf1} /* small letter u with diaeresis */,
+        {0x2018, 0xd8} /* single quotation mark */,
+        {0x2019, 0xd9} /* single quotation mark */,
+        {0x201c, 0xda} /* double quotation mark */,
+        {0x201d, 0xdb} /* double quotation mark */,
+        {0x2070, 0xb0} /* digit zero */,
+        {0x2074, 0xb4} /* digit four */,
+        {0x2075, 0xb5} /* digit five */,
+        {0x2076, 0xb6} /* digit six */,
+        {0x2077, 0xb7} /* digit seven */,
+        {0x2078, 0xb8} /* digit eight */,
+        {0x2079, 0xb9} /* digit nine */,
+        {0x207a, 0xab} /* plus sign */,
+        {0x207b, 0xaf} /* minus */,
+        {0x207d, 0xa8} /* left parenthesis */,
+        {0x207e, 0xa9} /* right parenthesis */,
+        {0x21d0, 0xbc} /* double arrow */,
+        {0x2260, 0xbd} /* equal to */,
+        {0x2265, 0xbe} /* or equal to */,
+        {0x2500, 0xf3} /* drawings light horizontal */,
+        {0x2502, 0xf4} /* drawings light vertical */,
+        {0x250c, 0xf8} /* drawings light down and right */,
+        {0x2510, 0xf7} /* drawings light down and left */,
+        {0x2514, 0xf5} /* drawings light up and right */,
+        {0x2518, 0xf6} /* drawings light up and left */,
+        {0x251c, 0xf9} /* drawings light vertical and right */,
+        {0x2524, 0xfb} /* drawings light vertical and left */,
+        {0x252c, 0xfc} /* drawings light down and horizontal */,
+        {0x2534, 0xfa} /* drawings light up and horizontal */,
+        {0x253c, 0xfd} /* drawings light vertical and horizontal */,
+        {0x2588, 0xff} /* block */
+};
+
+/*
+#define cet_ucs4_to_csa_z243_4_1985_gr_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_csa_z243_4_1985_gr_extra[cet_ucs4_to_csa_z243_4_1985_gr_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_csa_z243_4_1985_gr =   /* defined in cet.h */
+{      
+       cet_cs_name_csa_z243_4_1985_gr,         /* name of character set        */
+       cet_cs_alias_csa_z243_4_1985_gr,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_csa_z243_4_1985_gr,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_csa_z243_4_1985_gr,                /* first non standard character */
+       cet_ucs4_cnt_csa_z243_4_1985_gr,                /* number of values in table    */
+
+       cet_ucs4_to_csa_z243_4_1985_gr_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_csa_z243_4_1985_gr_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int csa_z243_4_1985_gr_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x00a1, 0x00a8, 0x00a3, 0x00a2, 0x00a5, 0x00b1, 0x00b4, 
+       0x207d, 0x207e, 0x00bd, 0x207a, 0x00b8, 0x00ad, 0x00b7, 0x207b, 
+       0x2070, 0x00b9, 0x00b2, 0x00b3, 0x2074, 0x2075, 0x2076, 0x2077, 
+       0x2078, 0x2079, 0x00bc, 0x00be, 0x21d0, 0x2260, 0x2265, 0x00bf, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00cd, 0x00ce, 0x00cf, 0x00d1, 0x00d3, 0x00d4, 0x00d9, 0x00da, 
+       0x00db, 0x00dc, 0x00ae, 0x00a7, 0x00b6, 0x00b5, 0x00aa, 0x00ba, 
+       0x2018, 0x2019, 0x201c, 0x201d, 0x00ab, 0x00bb, 0x00b0, 0x00a6, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 
+       0x00ed, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f4, 0x00f9, 0x00fa, 
+       0x00fb, 0x00fc, 0x00a9, 0x2500, 0x2502, 0x2514, 0x2518, 0x2510, 
+       0x250c, 0x251c, 0x2534, 0x2524, 0x252c, 0x253c, 0x00ac, 0x2588
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/csn_369103.h b/gpsbabel/cet/csn_369103.h
new file mode 100644 (file)
index 0000000..4b6cca8
--- /dev/null
@@ -0,0 +1,200 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "CSN_369103" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef csn_369103_h
+#define csn_369103_h
+
+#define cet_cs_name_csn_369103 "CSN_369103"
+
+const char *cet_cs_alias_csn_369103[] = 
+{
+       "CSN_369103", "iso-ir-139", "koi8l2", "KOI-8_L2",
+       NULL
+};
+
+#define cet_ucs4_ofs_csn_369103 36
+#define cet_ucs4_cnt_csn_369103 220
+
+const int cet_ucs4_map_csn_369103[cet_ucs4_cnt_csn_369103] =
+{
+       0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 
+       0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 
+       0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 
+       0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 
+       0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 
+       0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 
+       0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 
+       0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 
+       0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x0104, 0x02d8, 0x0141, 
+       0x0024, 0x013d, 0x015a, 0x00a7, 0x00a8, 0x0160, 0x015e, 0x0164, 
+       0x0179, 0x00ad, 0x017d, 0x017b, 0x00b0, 0x0105, 0x02db, 0x0142, 
+       0x00b4, 0x013e, 0x015b, 0x02c7, 0x00b8, 0x0161, 0x015f, 0x0165, 
+       0x017a, 0x02dd, 0x017e, 0x017c, 0x0154, 0x00c1, 0x00c2, 0x0102, 
+       0x00c4, 0x0139, 0x0106, 0x00c7, 0x010c, 0x00c9, 0x0118, 0x00cb, 
+       0x011a, 0x00cd, 0x00ce, 0x010e, 0x0110, 0x0143, 0x0147, 0x00d3, 
+       0x00d4, 0x0150, 0x00d6, 0x00d7, 0x0158, 0x016e, 0x00da, 0x0170, 
+       0x00dc, 0x00dd, 0x0162, 0x00df, 0x0155, 0x00e1, 0x00e2, 0x0103, 
+       0x00e4, 0x013a, 0x0107, 0x00e7, 0x010d, 0x00e9, 0x0119, 0x00eb, 
+       0x011b, 0x00ed, 0x00ee, 0x010f, 0x0111, 0x0144, 0x0148, 0x00f3, 
+       0x00f4, 0x0151, 0x00f6, 0x00f7, 0x0159, 0x016f, 0x00fa, 0x0171, 
+       0x00fc, 0x00fd, 0x0163, 0x02d9
+};
+
+#define cet_ucs4_to_csn_369103_ct 59
+
+const cet_ucs4_link_t cet_ucs4_to_csn_369103_links[cet_ucs4_to_csn_369103_ct] =
+{
+        {0x0024, 0xa4} /* sign */,
+        {0x00a4, 0x24} /* sign */,
+        {0x0102, 0xc3} /* capital letter a with breve */,
+        {0x0103, 0xe3} /* small letter a with breve */,
+        {0x0104, 0xa1} /* capital letter a with ogonek */,
+        {0x0105, 0xb1} /* small letter a with ogonek */,
+        {0x0106, 0xc6} /* capital letter c with acute */,
+        {0x0107, 0xe6} /* small letter c with acute */,
+        {0x010c, 0xc8} /* capital letter c with caron */,
+        {0x010d, 0xe8} /* small letter c with caron */,
+        {0x010e, 0xcf} /* capital letter d with caron */,
+        {0x010f, 0xef} /* small letter d with caron */,
+        {0x0110, 0xd0} /* capital letter d with stroke */,
+        {0x0111, 0xf0} /* small letter d with stroke */,
+        {0x0118, 0xca} /* capital letter e with ogonek */,
+        {0x0119, 0xea} /* small letter e with ogonek */,
+        {0x011a, 0xcc} /* capital letter e with caron */,
+        {0x011b, 0xec} /* small letter e with caron */,
+        {0x0139, 0xc5} /* capital letter l with acute */,
+        {0x013a, 0xe5} /* small letter l with acute */,
+        {0x013d, 0xa5} /* capital letter l with caron */,
+        {0x013e, 0xb5} /* small letter l with caron */,
+        {0x0141, 0xa3} /* capital letter l with stroke */,
+        {0x0142, 0xb3} /* small letter l with stroke */,
+        {0x0143, 0xd1} /* capital letter n with acute */,
+        {0x0144, 0xf1} /* small letter n with acute */,
+        {0x0147, 0xd2} /* capital letter n with caron */,
+        {0x0148, 0xf2} /* small letter n with caron */,
+        {0x0150, 0xd5} /* capital letter o with double acute */,
+        {0x0151, 0xf5} /* small letter o with double acute */,
+        {0x0154, 0xc0} /* capital letter r with acute */,
+        {0x0155, 0xe0} /* small letter r with acute */,
+        {0x0158, 0xd8} /* capital letter r with caron */,
+        {0x0159, 0xf8} /* small letter r with caron */,
+        {0x015a, 0xa6} /* capital letter s with acute */,
+        {0x015b, 0xb6} /* small letter s with acute */,
+        {0x015e, 0xaa} /* capital letter s with cedilla */,
+        {0x015f, 0xba} /* small letter s with cedilla */,
+        {0x0160, 0xa9} /* capital letter s with caron */,
+        {0x0161, 0xb9} /* small letter s with caron */,
+        {0x0162, 0xde} /* capital letter t with cedilla */,
+        {0x0163, 0xfe} /* small letter t with cedilla */,
+        {0x0164, 0xab} /* capital letter t with caron */,
+        {0x0165, 0xbb} /* small letter t with caron */,
+        {0x016e, 0xd9} /* capital letter u with ring above */,
+        {0x016f, 0xf9} /* small letter u with ring above */,
+        {0x0170, 0xdb} /* capital letter u with double acute */,
+        {0x0171, 0xfb} /* small letter u with double acute */,
+        {0x0179, 0xac} /* capital letter z with acute */,
+        {0x017a, 0xbc} /* small letter z with acute */,
+        {0x017b, 0xaf} /* capital letter z with dot above */,
+        {0x017c, 0xbf} /* small letter z with dot above */,
+        {0x017d, 0xae} /* capital letter z with caron */,
+        {0x017e, 0xbe} /* small letter z with caron */,
+        {0x02c7, 0xb7} /* caron */,
+        {0x02d8, 0xa2} /* breve */,
+        {0x02d9, 0xff} /* above */,
+        {0x02db, 0xb2} /* ogonek */,
+        {0x02dd, 0xbd} /* acute accent */
+};
+
+/*
+#define cet_ucs4_to_csn_369103_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_csn_369103_extra[cet_ucs4_to_csn_369103_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_csn_369103 =   /* defined in cet.h */
+{      
+       cet_cs_name_csn_369103,         /* name of character set        */
+       cet_cs_alias_csn_369103,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_csn_369103,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_csn_369103,                /* first non standard character */
+       cet_ucs4_cnt_csn_369103,                /* number of values in table    */
+
+       cet_ucs4_to_csn_369103_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_csn_369103_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int csn_369103_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x0104, 0x02d8, 0x0141, 0x0024, 0x013d, 0x015a, 0x00a7, 
+       0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, 
+       0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, 
+       0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, 
+       0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, 
+       0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, 
+       0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, 
+       0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, 
+       0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, 
+       0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, 
+       0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, 
+       0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/cwi.h b/gpsbabel/cet/cwi.h
new file mode 100644 (file)
index 0000000..3b5be22
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "CWI" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef cwi_h
+#define cwi_h
+
+#define cet_cs_name_cwi "CWI"
+
+const char *cet_cs_alias_cwi[] = 
+{
+       "CWI", "cp-hu", "CWI-2", NULL
+};
+
+#define cet_ucs4_ofs_cwi 128
+#define cet_ucs4_cnt_cwi 128
+
+const int cet_ucs4_map_cwi[cet_ucs4_cnt_cwi] =
+{
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00cd, 0x00c4, 0x00c1, 
+       0x00c9, 0x00e6, 0x00c6, 0x0151, 0x00f6, 0x00d3, 0x0171, 0x00da, 
+       0x0170, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0xe01f, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x0150, 
+       0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x03b2, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x03bc, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x2205, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x2218, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_cwi_ct 128
+
+const cet_ucs4_link_t cet_ucs4_to_cwi_links[cet_ucs4_to_cwi_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a1, 0xad} /* exclamation mark */,
+        {0x00a2, 0x9b} /* sign */,
+        {0x00a3, 0x9c} /* sign */,
+        {0x00a5, 0x9d} /* sign */,
+        {0x00aa, 0xa6} /* ordinal indicator */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ac, 0xaa} /* sign */,
+        {0x00b1, 0xf1} /* sign */,
+        {0x00b2, 0xfd} /* two */,
+        {0x00b7, 0xf9} /* dot */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00bc, 0xac} /* fraction one quarter */,
+        {0x00bd, 0xab} /* fraction one half */,
+        {0x00bf, 0xa8} /* question mark */,
+        {0x00c1, 0x8f} /* capital letter a with acute */,
+        {0x00c4, 0x8e} /* capital letter a with diaeresis */,
+        {0x00c6, 0x92} /* capital letter ae */,
+        {0x00c7, 0x80} /* capital letter c with cedilla */,
+        {0x00c9, 0x90} /* capital letter e with acute */,
+        {0x00cd, 0x8d} /* capital letter i with acute */,
+        {0x00d1, 0xa5} /* capital letter n with tilde */,
+        {0x00d3, 0x95} /* capital letter o with acute */,
+        {0x00d6, 0x99} /* capital letter o with diaeresis */,
+        {0x00da, 0x97} /* capital letter u with acute */,
+        {0x00dc, 0x9a} /* capital letter u with diaeresis */,
+        {0x00e0, 0x85} /* small letter a with grave */,
+        {0x00e1, 0xa0} /* small letter a with acute */,
+        {0x00e2, 0x83} /* small letter a with circumflex */,
+        {0x00e4, 0x84} /* small letter a with diaeresis */,
+        {0x00e5, 0x86} /* small letter a with ring above */,
+        {0x00e6, 0x91} /* small letter ae */,
+        {0x00e7, 0x87} /* small letter c with cedilla */,
+        {0x00e8, 0x8a} /* small letter e with grave */,
+        {0x00e9, 0x82} /* small letter e with acute */,
+        {0x00ea, 0x88} /* small letter e with circumflex */,
+        {0x00eb, 0x89} /* small letter e with diaeresis */,
+        {0x00ed, 0xa1} /* small letter i with acute */,
+        {0x00ee, 0x8c} /* small letter i with circumflex */,
+        {0x00ef, 0x8b} /* small letter i with diaeresis */,
+        {0x00f1, 0xa4} /* small letter n with tilde */,
+        {0x00f3, 0xa2} /* small letter o with acute */,
+        {0x00f6, 0x94} /* small letter o with diaeresis */,
+        {0x00f7, 0xf6} /* sign */,
+        {0x00fa, 0xa3} /* small letter u with acute */,
+        {0x00fc, 0x81} /* small letter u with diaeresis */,
+        {0x0150, 0xa7} /* capital letter o with double acute */,
+        {0x0151, 0x93} /* small letter o with double acute */,
+        {0x0170, 0x98} /* capital letter u with double acute */,
+        {0x0171, 0x96} /* small letter u with double acute */,
+        {0x0393, 0xe2} /* capital letter gamma */,
+        {0x0398, 0xe9} /* capital letter theta */,
+        {0x03a3, 0xe4} /* capital letter sigma */,
+        {0x03a6, 0xe8} /* capital letter phi */,
+        {0x03a9, 0xea} /* capital letter omega */,
+        {0x03b1, 0xe0} /* small letter alpha */,
+        {0x03b2, 0xe1} /* small letter beta */,
+        {0x03b4, 0xeb} /* small letter delta */,
+        {0x03b5, 0xee} /* small letter epsilon */,
+        {0x03bc, 0xe6} /* small letter mu */,
+        {0x03c0, 0xe3} /* small letter pi */,
+        {0x03c3, 0xe5} /* small letter sigma */,
+        {0x03c4, 0xe7} /* small letter tau */,
+        {0x2022, 0xfa} /* puce */,
+        {0x207f, 0xfc} /* latin small letter n */,
+        {0x20a7, 0x9e} /* sign */,
+        {0x2205, 0xed} /* set */,
+        {0x2218, 0xf8} /* operator */,
+        {0x221a, 0xfb} /* root */,
+        {0x221e, 0xec} /* infinity */,
+        {0x2229, 0xef} /* intersection */,
+        {0x2248, 0xf7} /* equal to */,
+        {0x2261, 0xf0} /* to */,
+        {0x2264, 0xf3} /* or equal to */,
+        {0x2265, 0xf2} /* or equal to */,
+        {0x2310, 0xa9} /* not sign */,
+        {0x2320, 0xf4} /* half integral */,
+        {0x2321, 0xf5} /* half integral */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2552, 0xd5} /* drawings down light and right heavy */,
+        {0x2553, 0xd6} /* drawings down heavy and right light */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2555, 0xb8} /* drawings down light and left heavy */,
+        {0x2556, 0xb7} /* drawings down heavy and left light */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x2558, 0xd4} /* drawings up light and right heavy */,
+        {0x2559, 0xd3} /* drawings up heavy and right light */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255b, 0xbe} /* drawings up light and left heavy */,
+        {0x255c, 0xbd} /* drawings up heavy and left light */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x255e, 0xc6} /* drawings vertical light and right heavy */,
+        {0x255f, 0xc7} /* drawings vertical heavy and right light */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2561, 0xb5} /* drawings vertical light and left heavy */,
+        {0x2562, 0xb6} /* drawings vertical heavy and left light */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2564, 0xd1} /* drawings down light and horizontal heavy */,
+        {0x2565, 0xd2} /* drawings down heavy and horizontal light */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2567, 0xcf} /* drawings up light and horizontal heavy */,
+        {0x2568, 0xd0} /* drawings up heavy and horizontal light */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256a, 0xd8} /* drawings vertical light and horizontal heavy */,
+        {0x256b, 0xd7} /* drawings vertical heavy and horizontal light */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x258c, 0xdd} /* half block */,
+        {0x2590, 0xde} /* half block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */,
+        {0xe01f, 0x9f} /* guilder sign (ibm437 159) */
+};
+
+/*
+#define cet_ucs4_to_cwi_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_cwi_extra[cet_ucs4_to_cwi_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_cwi =  /* defined in cet.h */
+{      
+       cet_cs_name_cwi,                /* name of character set        */
+       cet_cs_alias_cwi,               /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_cwi,               /* char to UCS-4 value table    */
+       cet_ucs4_ofs_cwi,               /* first non standard character */
+       cet_ucs4_cnt_cwi,               /* number of values in table    */
+
+       cet_ucs4_to_cwi_links,  /* UCS-4 to char links          */
+       cet_ucs4_to_cwi_ct,             /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int cwi_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00cd, 0x00c4, 0x00c1, 
+       0x00c9, 0x00e6, 0x00c6, 0x0151, 0x00f6, 0x00d3, 0x0171, 0x00da, 
+       0x0170, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0xe01f, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x0150, 
+       0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x03b2, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x03bc, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x2205, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x2218, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/dec_mcs.h b/gpsbabel/cet/dec_mcs.h
new file mode 100644 (file)
index 0000000..b7a319d
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "DEC-MCS" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef dec_mcs_h
+#define dec_mcs_h
+
+#define cet_cs_name_dec_mcs "DEC-MCS"
+
+const char *cet_cs_alias_dec_mcs[] = 
+{
+       "DEC-MCS", "dec", NULL
+};
+
+#define cet_ucs4_ofs_dec_mcs 160
+#define cet_ucs4_cnt_dec_mcs 94
+
+const int cet_ucs4_map_dec_mcs[cet_ucs4_cnt_dec_mcs] =
+{
+           -1, 0x00a1, 0x00a2, 0x00a3,     -1, 0x00a5,     -1, 0x00a7, 
+       0x00a4, 0x00a9, 0x00aa, 0x00ab,     -1,     -1,     -1,     -1, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3,     -1, 0x00b5, 0x00b6, 0x00b7, 
+           -1, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd,     -1, 0x00bf, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+           -1, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0152, 
+       0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0178,     -1, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 
+       0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 
+           -1, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0153, 
+       0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00ff
+};
+
+#define cet_ucs4_to_dec_mcs_ct 5
+
+const cet_ucs4_link_t cet_ucs4_to_dec_mcs_links[cet_ucs4_to_dec_mcs_ct] =
+{
+        {0x00a4, 0xa8} /* sign */,
+        {0x00ff, 0xfd} /* small letter y with diaeresis */,
+        {0x0152, 0xd7} /* capital ligature oe */,
+        {0x0153, 0xf7} /* small ligature oe */,
+        {0x0178, 0xdd} /* capital letter y with diaeresis */
+};
+
+/*
+#define cet_ucs4_to_dec_mcs_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_dec_mcs_extra[cet_ucs4_to_dec_mcs_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_dec_mcs =      /* defined in cet.h */
+{      
+       cet_cs_name_dec_mcs,            /* name of character set        */
+       cet_cs_alias_dec_mcs,           /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_dec_mcs,           /* char to UCS-4 value table    */
+       cet_ucs4_ofs_dec_mcs,           /* first non standard character */
+       cet_ucs4_cnt_dec_mcs,           /* number of values in table    */
+
+       cet_ucs4_to_dec_mcs_links,      /* UCS-4 to char links          */
+       cet_ucs4_to_dec_mcs_ct,         /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int dec_mcs_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+           -1, 0x00a1, 0x00a2, 0x00a3,     -1, 0x00a5,     -1, 0x00a7, 
+       0x00a4, 0x00a9, 0x00aa, 0x00ab,     -1,     -1,     -1,     -1, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3,     -1, 0x00b5, 0x00b6, 0x00b7, 
+           -1, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd,     -1, 0x00bf, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+           -1, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0152, 
+       0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0178,     -1, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 
+       0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 
+           -1, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0153, 
+       0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00ff,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/din_66003.h b/gpsbabel/cet/din_66003.h
new file mode 100644 (file)
index 0000000..cd0b69d
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "DIN_66003" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef din_66003_h
+#define din_66003_h
+
+#define cet_cs_name_din_66003 "DIN_66003"
+
+const char *cet_cs_alias_din_66003[] = 
+{
+       "DIN_66003", "de", "ISO646-DE", "iso-ir-21",
+       NULL
+};
+
+#define cet_ucs4_ofs_din_66003 64
+#define cet_ucs4_cnt_din_66003 64
+
+const int cet_ucs4_map_din_66003[cet_ucs4_cnt_din_66003] =
+{
+       0x00a7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c4, 0x00d6, 0x00dc, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e4, 0x00f6, 0x00fc, 0x00df, 0x007f
+};
+
+#define cet_ucs4_to_din_66003_ct 8
+
+const cet_ucs4_link_t cet_ucs4_to_din_66003_links[cet_ucs4_to_din_66003_ct] =
+{
+        {0x00a7, 0x40} /* sign */,
+        {0x00c4, 0x5b} /* capital letter a with diaeresis */,
+        {0x00d6, 0x5c} /* capital letter o with diaeresis */,
+        {0x00dc, 0x5d} /* capital letter u with diaeresis */,
+        {0x00df, 0x7e} /* small letter sharp s (german) */,
+        {0x00e4, 0x7b} /* small letter a with diaeresis */,
+        {0x00f6, 0x7c} /* small letter o with diaeresis */,
+        {0x00fc, 0x7d} /* small letter u with diaeresis */
+};
+
+/*
+#define cet_ucs4_to_din_66003_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_din_66003_extra[cet_ucs4_to_din_66003_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_din_66003 =    /* defined in cet.h */
+{      
+       cet_cs_name_din_66003,          /* name of character set        */
+       cet_cs_alias_din_66003,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_din_66003,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_din_66003,         /* first non standard character */
+       cet_ucs4_cnt_din_66003,         /* number of values in table    */
+
+       cet_ucs4_to_din_66003_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_din_66003_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int din_66003_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x00a7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c4, 0x00d6, 0x00dc, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e4, 0x00f6, 0x00fc, 0x00df, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ds_2089.h b/gpsbabel/cet/ds_2089.h
new file mode 100644 (file)
index 0000000..1035225
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "DS_2089" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ds_2089_h
+#define ds_2089_h
+
+#define cet_cs_name_ds_2089 "DS_2089"
+
+const char *cet_cs_alias_ds_2089[] = 
+{
+       "DS_2089", "dk", "DS2089", "ISO646-DK",
+       NULL
+};
+
+#define cet_ucs4_ofs_ds_2089 91
+#define cet_ucs4_cnt_ds_2089 37
+
+const int cet_ucs4_map_ds_2089[cet_ucs4_cnt_ds_2089] =
+{
+       0x00c6, 0x00d8, 0x00c5, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 
+       0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 
+       0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 
+       0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 
+       0x00e6, 0x00f8, 0x00e5, 0x007e, 0x007f
+};
+
+#define cet_ucs4_to_ds_2089_ct 6
+
+const cet_ucs4_link_t cet_ucs4_to_ds_2089_links[cet_ucs4_to_ds_2089_ct] =
+{
+        {0x00c5, 0x5d} /* capital letter a with ring above */,
+        {0x00c6, 0x5b} /* capital letter ae */,
+        {0x00d8, 0x5c} /* capital letter o with stroke */,
+        {0x00e5, 0x7d} /* small letter a with ring above */,
+        {0x00e6, 0x7b} /* small letter ae */,
+        {0x00f8, 0x7c} /* small letter o with stroke */
+};
+
+/*
+#define cet_ucs4_to_ds_2089_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ds_2089_extra[cet_ucs4_to_ds_2089_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ds_2089 =      /* defined in cet.h */
+{      
+       cet_cs_name_ds_2089,            /* name of character set        */
+       cet_cs_alias_ds_2089,           /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ds_2089,           /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ds_2089,           /* first non standard character */
+       cet_ucs4_cnt_ds_2089,           /* number of values in table    */
+
+       cet_ucs4_to_ds_2089_links,      /* UCS-4 to char links          */
+       cet_ucs4_to_ds_2089_ct,         /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ds_2089_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c6, 0x00d8, 0x00c5, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e6, 0x00f8, 0x00e5, 0x007e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ecma_cyrillic.h b/gpsbabel/cet/ecma_cyrillic.h
new file mode 100644 (file)
index 0000000..dda8a70
--- /dev/null
@@ -0,0 +1,219 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ECMA-cyrillic" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ecma_cyrillic_h
+#define ecma_cyrillic_h
+
+#define cet_cs_name_ecma_cyrillic "ECMA-cyrillic"
+
+const char *cet_cs_alias_ecma_cyrillic[] = 
+{
+       "ECMA-cyrillic", "ECMA-113", "ECMA-113:1986", "iso-ir-111",
+       NULL
+};
+
+#define cet_ucs4_ofs_ecma_cyrillic 161
+#define cet_ucs4_cnt_ecma_cyrillic 95
+
+const int cet_ucs4_map_ecma_cyrillic[cet_ucs4_cnt_ecma_cyrillic] =
+{
+       0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 
+       0x0459, 0x045a, 0x045b, 0x045c, 0x00ad, 0x045e, 0x045f, 0x2116, 
+       0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 
+       0x0409, 0x040a, 0x040b, 0x040c, 0x00a4, 0x040e, 0x040f, 0x044e, 
+       0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 
+       0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 
+       0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 
+       0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 0x042e, 
+       0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 
+       0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 
+       0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 
+       0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+};
+
+#define cet_ucs4_to_ecma_cyrillic_ct 94
+
+const cet_ucs4_link_t cet_ucs4_to_ecma_cyrillic_links[cet_ucs4_to_ecma_cyrillic_ct] =
+{
+        {0x00a4, 0xbd} /* sign */,
+        {0x0401, 0xb3} /* capital letter io */,
+        {0x0402, 0xb1} /* capital letter dje (serbocroatian) */,
+        {0x0403, 0xb2} /* capital letter gje (macedonian) */,
+        {0x0404, 0xb4} /* capital letter ukrainian ie */,
+        {0x0405, 0xb5} /* capital letter dze (macedonian) */,
+        {0x0406, 0xb6} /* capital letter byelorussian-ukrainian i */,
+        {0x0407, 0xb7} /* capital letter yi (ukrainian) */,
+        {0x0408, 0xb8} /* capital letter je */,
+        {0x0409, 0xb9} /* capital letter lje */,
+        {0x040a, 0xba} /* capital letter nje */,
+        {0x040b, 0xbb} /* capital letter tshe (serbocroatian) */,
+        {0x040c, 0xbc} /* capital letter kje (macedonian) */,
+        {0x040e, 0xbe} /* capital letter short u (byelorussian) */,
+        {0x040f, 0xbf} /* capital letter dzhe */,
+        {0x0410, 0xe1} /* capital letter a */,
+        {0x0411, 0xe2} /* capital letter be */,
+        {0x0412, 0xf7} /* capital letter ve */,
+        {0x0413, 0xe7} /* capital letter ghe */,
+        {0x0414, 0xe4} /* capital letter de */,
+        {0x0415, 0xe5} /* capital letter ie */,
+        {0x0416, 0xf6} /* capital letter zhe */,
+        {0x0417, 0xfa} /* capital letter ze */,
+        {0x0418, 0xe9} /* capital letter i */,
+        {0x0419, 0xea} /* capital letter short i */,
+        {0x041a, 0xeb} /* capital letter ka */,
+        {0x041b, 0xec} /* capital letter el */,
+        {0x041c, 0xed} /* capital letter em */,
+        {0x041d, 0xee} /* capital letter en */,
+        {0x041e, 0xef} /* capital letter o */,
+        {0x041f, 0xf0} /* capital letter pe */,
+        {0x0420, 0xf2} /* capital letter er */,
+        {0x0421, 0xf3} /* capital letter es */,
+        {0x0422, 0xf4} /* capital letter te */,
+        {0x0423, 0xf5} /* capital letter u */,
+        {0x0424, 0xe6} /* capital letter ef */,
+        {0x0425, 0xe8} /* capital letter ha */,
+        {0x0426, 0xe3} /* capital letter tse */,
+        {0x0427, 0xfe} /* capital letter che */,
+        {0x0428, 0xfb} /* capital letter sha */,
+        {0x0429, 0xfd} /* capital letter shcha */,
+        {0x042a, 0xff} /* capital letter hard sign */,
+        {0x042b, 0xf9} /* capital letter yeru */,
+        {0x042c, 0xf8} /* capital letter soft sign */,
+        {0x042d, 0xfc} /* capital letter e */,
+        {0x042e, 0xe0} /* capital letter yu */,
+        {0x042f, 0xf1} /* capital letter ya */,
+        {0x0430, 0xc1} /* small letter a */,
+        {0x0431, 0xc2} /* small letter be */,
+        {0x0432, 0xd7} /* small letter ve */,
+        {0x0433, 0xc7} /* small letter ghe */,
+        {0x0434, 0xc4} /* small letter de */,
+        {0x0435, 0xc5} /* small letter ie */,
+        {0x0436, 0xd6} /* small letter zhe */,
+        {0x0437, 0xda} /* small letter ze */,
+        {0x0438, 0xc9} /* small letter i */,
+        {0x0439, 0xca} /* small letter short i */,
+        {0x043a, 0xcb} /* small letter ka */,
+        {0x043b, 0xcc} /* small letter el */,
+        {0x043c, 0xcd} /* small letter em */,
+        {0x043d, 0xce} /* small letter en */,
+        {0x043e, 0xcf} /* small letter o */,
+        {0x043f, 0xd0} /* small letter pe */,
+        {0x0440, 0xd2} /* small letter er */,
+        {0x0441, 0xd3} /* small letter es */,
+        {0x0442, 0xd4} /* small letter te */,
+        {0x0443, 0xd5} /* small letter u */,
+        {0x0444, 0xc6} /* small letter ef */,
+        {0x0445, 0xc8} /* small letter ha */,
+        {0x0446, 0xc3} /* small letter tse */,
+        {0x0447, 0xde} /* small letter che */,
+        {0x0448, 0xdb} /* small letter sha */,
+        {0x0449, 0xdd} /* small letter shcha */,
+        {0x044a, 0xdf} /* small letter hard sign */,
+        {0x044b, 0xd9} /* small letter yeru */,
+        {0x044c, 0xd8} /* small letter soft sign */,
+        {0x044d, 0xdc} /* small letter e */,
+        {0x044e, 0xc0} /* small letter yu */,
+        {0x044f, 0xd1} /* small letter ya */,
+        {0x0451, 0xa3} /* small letter io */,
+        {0x0452, 0xa1} /* small letter dje (serbocroatian) */,
+        {0x0453, 0xa2} /* small letter gje (macedonian) */,
+        {0x0454, 0xa4} /* small letter ukrainian ie */,
+        {0x0455, 0xa5} /* small letter dze (macedonian) */,
+        {0x0456, 0xa6} /* small letter byelorussian-ukrainian i */,
+        {0x0457, 0xa7} /* small letter yi (ukrainian) */,
+        {0x0458, 0xa8} /* small letter je */,
+        {0x0459, 0xa9} /* small letter lje */,
+        {0x045a, 0xaa} /* small letter nje */,
+        {0x045b, 0xab} /* small letter tshe (serbocroatian) */,
+        {0x045c, 0xac} /* small letter kje (macedonian) */,
+        {0x045e, 0xae} /* small letter short u (byelorussian) */,
+        {0x045f, 0xaf} /* small letter dzhe */,
+        {0x2116, 0xb0} /* sign */
+};
+
+/*
+#define cet_ucs4_to_ecma_cyrillic_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ecma_cyrillic_extra[cet_ucs4_to_ecma_cyrillic_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ecma_cyrillic =        /* defined in cet.h */
+{      
+       cet_cs_name_ecma_cyrillic,              /* name of character set        */
+       cet_cs_alias_ecma_cyrillic,             /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ecma_cyrillic,             /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ecma_cyrillic,             /* first non standard character */
+       cet_ucs4_cnt_ecma_cyrillic,             /* number of values in table    */
+
+       cet_ucs4_to_ecma_cyrillic_links,        /* UCS-4 to char links          */
+       cet_ucs4_to_ecma_cyrillic_ct,           /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ecma_cyrillic_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457, 
+       0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00ad, 0x045e, 0x045f, 
+       0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407, 
+       0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00a4, 0x040e, 0x040f, 
+       0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 
+       0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 
+       0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+       0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 
+       0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/es.h b/gpsbabel/cet/es.h
new file mode 100644 (file)
index 0000000..4fd66e8
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ES" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef es_h
+#define es_h
+
+#define cet_cs_name_es "ES"
+
+const char *cet_cs_alias_es[] = 
+{
+       "ES", "ISO646-ES", "iso-ir-17", NULL
+};
+
+#define cet_ucs4_ofs_es 35
+#define cet_ucs4_cnt_es 93
+
+const int cet_ucs4_map_es[cet_ucs4_cnt_es] =
+{
+       0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 
+       0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 
+       0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 
+       0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x00a7, 0x0041, 0x0042, 
+       0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 
+       0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 
+       0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 
+       0x00a1, 0x00d1, 0x00bf, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 
+       0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 
+       0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 
+       0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 
+       0x00b0, 0x00f1, 0x00e7, 0x007e, 0x007f
+};
+
+#define cet_ucs4_to_es_ct 8
+
+const cet_ucs4_link_t cet_ucs4_to_es_links[cet_ucs4_to_es_ct] =
+{
+        {0x00a1, 0x5b} /* exclamation mark */,
+        {0x00a3, 0x23} /* sign */,
+        {0x00a7, 0x40} /* sign */,
+        {0x00b0, 0x7b} /* sign */,
+        {0x00bf, 0x5d} /* question mark */,
+        {0x00d1, 0x5c} /* capital letter n with tilde */,
+        {0x00e7, 0x7d} /* small letter c with cedilla */,
+        {0x00f1, 0x7c} /* small letter n with tilde */
+};
+
+/*
+#define cet_ucs4_to_es_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_es_extra[cet_ucs4_to_es_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_es =   /* defined in cet.h */
+{      
+       cet_cs_name_es,         /* name of character set        */
+       cet_cs_alias_es,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_es,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_es,                /* first non standard character */
+       cet_ucs4_cnt_es,                /* number of values in table    */
+
+       cet_ucs4_to_es_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_es_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int es_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x00a7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00a1, 0x00d1, 0x00bf, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00b0, 0x00f1, 0x00e7, 0x007e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/es2.h b/gpsbabel/cet/es2.h
new file mode 100644 (file)
index 0000000..ec3e2a9
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ES2" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef es2_h
+#define es2_h
+
+#define cet_cs_name_es2 "ES2"
+
+const char *cet_cs_alias_es2[] = 
+{
+       "ES2", "ISO646-ES2", "iso-ir-85", NULL
+};
+
+#define cet_ucs4_ofs_es2 64
+#define cet_ucs4_cnt_es2 64
+
+const int cet_ucs4_map_es2[cet_ucs4_cnt_es2] =
+{
+       0x2022, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00a1, 0x00d1, 0x00c7, 0x00bf, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00b4, 0x00f1, 0x00e7, 0x00a8, 0x007f
+};
+
+#define cet_ucs4_to_es2_ct 9
+
+const cet_ucs4_link_t cet_ucs4_to_es2_links[cet_ucs4_to_es2_ct] =
+{
+        {0x00a1, 0x5b} /* exclamation mark */,
+        {0x00a8, 0x7e} /* diaeresis */,
+        {0x00b4, 0x7b} /* accent */,
+        {0x00bf, 0x5e} /* question mark */,
+        {0x00c7, 0x5d} /* capital letter c with cedilla */,
+        {0x00d1, 0x5c} /* capital letter n with tilde */,
+        {0x00e7, 0x7d} /* small letter c with cedilla */,
+        {0x00f1, 0x7c} /* small letter n with tilde */,
+        {0x2022, 0x40} /* puce */
+};
+
+/*
+#define cet_ucs4_to_es2_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_es2_extra[cet_ucs4_to_es2_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_es2 =  /* defined in cet.h */
+{      
+       cet_cs_name_es2,                /* name of character set        */
+       cet_cs_alias_es2,               /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_es2,               /* char to UCS-4 value table    */
+       cet_ucs4_ofs_es2,               /* first non standard character */
+       cet_ucs4_cnt_es2,               /* number of values in table    */
+
+       cet_ucs4_to_es2_links,  /* UCS-4 to char links          */
+       cet_ucs4_to_es2_ct,             /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int es2_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x2022, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00a1, 0x00d1, 0x00c7, 0x00bf, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00b4, 0x00f1, 0x00e7, 0x00a8, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/gb_1988_80.h b/gpsbabel/cet/gb_1988_80.h
new file mode 100644 (file)
index 0000000..90cb5fb
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "GB_1988-80" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef gb_1988_80_h
+#define gb_1988_80_h
+
+#define cet_cs_name_gb_1988_80 "GB_1988-80"
+
+const char *cet_cs_alias_gb_1988_80[] = 
+{
+       "GB_1988-80", "cn", "csISO57GB1988", "ISO646-CN", 
+       "iso-ir-57", NULL
+};
+
+#define cet_ucs4_ofs_gb_1988_80 36
+#define cet_ucs4_cnt_gb_1988_80 92
+
+const int cet_ucs4_map_gb_1988_80[cet_ucs4_cnt_gb_1988_80] =
+{
+       0x00a5, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 
+       0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 
+       0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 
+       0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 
+       0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 
+       0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 
+       0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 
+       0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 
+       0x007c, 0x007d, 0x203e, 0x007f
+};
+
+#define cet_ucs4_to_gb_1988_80_ct 2
+
+const cet_ucs4_link_t cet_ucs4_to_gb_1988_80_links[cet_ucs4_to_gb_1988_80_ct] =
+{
+        {0x00a5, 0x24} /* sign */,
+        {0x203e, 0x7e} /* overline */
+};
+
+/*
+#define cet_ucs4_to_gb_1988_80_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_gb_1988_80_extra[cet_ucs4_to_gb_1988_80_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_gb_1988_80 =   /* defined in cet.h */
+{      
+       cet_cs_name_gb_1988_80,         /* name of character set        */
+       cet_cs_alias_gb_1988_80,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_gb_1988_80,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_gb_1988_80,                /* first non standard character */
+       cet_ucs4_cnt_gb_1988_80,                /* number of values in table    */
+
+       cet_ucs4_to_gb_1988_80_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_gb_1988_80_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int gb_1988_80_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x00a5, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/gost_19768_87.h b/gpsbabel/cet/gost_19768_87.h
new file mode 100644 (file)
index 0000000..6a18ac5
--- /dev/null
@@ -0,0 +1,189 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "GOST_19768-87" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef gost_19768_87_h
+#define gost_19768_87_h
+
+#define cet_cs_name_gost_19768_87 "GOST_19768-87"
+
+const char *cet_cs_alias_gost_19768_87[] = 
+{
+       "GOST_19768-87", "iso-ir-153", "ST_SEV_358-88", NULL
+};
+
+#define cet_ucs4_ofs_gost_19768_87 161
+#define cet_ucs4_cnt_gost_19768_87 81
+
+const int cet_ucs4_map_gost_19768_87[cet_ucs4_cnt_gost_19768_87] =
+{
+       0x0401,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1, 0x00ad,     -1,     -1, 0x0410, 
+       0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 
+       0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 
+       0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 
+       0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 
+       0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 
+       0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 
+       0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 
+       0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,     -1, 
+       0x0451
+};
+
+#define cet_ucs4_to_gost_19768_87_ct 66
+
+const cet_ucs4_link_t cet_ucs4_to_gost_19768_87_links[cet_ucs4_to_gost_19768_87_ct] =
+{
+        {0x0401, 0xa1} /* capital letter io */,
+        {0x0410, 0xb0} /* capital letter a */,
+        {0x0411, 0xb1} /* capital letter be */,
+        {0x0412, 0xb2} /* capital letter ve */,
+        {0x0413, 0xb3} /* capital letter ghe */,
+        {0x0414, 0xb4} /* capital letter de */,
+        {0x0415, 0xb5} /* capital letter ie */,
+        {0x0416, 0xb6} /* capital letter zhe */,
+        {0x0417, 0xb7} /* capital letter ze */,
+        {0x0418, 0xb8} /* capital letter i */,
+        {0x0419, 0xb9} /* capital letter short i */,
+        {0x041a, 0xba} /* capital letter ka */,
+        {0x041b, 0xbb} /* capital letter el */,
+        {0x041c, 0xbc} /* capital letter em */,
+        {0x041d, 0xbd} /* capital letter en */,
+        {0x041e, 0xbe} /* capital letter o */,
+        {0x041f, 0xbf} /* capital letter pe */,
+        {0x0420, 0xc0} /* capital letter er */,
+        {0x0421, 0xc1} /* capital letter es */,
+        {0x0422, 0xc2} /* capital letter te */,
+        {0x0423, 0xc3} /* capital letter u */,
+        {0x0424, 0xc4} /* capital letter ef */,
+        {0x0425, 0xc5} /* capital letter ha */,
+        {0x0426, 0xc6} /* capital letter tse */,
+        {0x0427, 0xc7} /* capital letter che */,
+        {0x0428, 0xc8} /* capital letter sha */,
+        {0x0429, 0xc9} /* capital letter shcha */,
+        {0x042a, 0xca} /* capital letter hard sign */,
+        {0x042b, 0xcb} /* capital letter yeru */,
+        {0x042c, 0xcc} /* capital letter soft sign */,
+        {0x042d, 0xcd} /* capital letter e */,
+        {0x042e, 0xce} /* capital letter yu */,
+        {0x042f, 0xcf} /* capital letter ya */,
+        {0x0430, 0xd0} /* small letter a */,
+        {0x0431, 0xd1} /* small letter be */,
+        {0x0432, 0xd2} /* small letter ve */,
+        {0x0433, 0xd3} /* small letter ghe */,
+        {0x0434, 0xd4} /* small letter de */,
+        {0x0435, 0xd5} /* small letter ie */,
+        {0x0436, 0xd6} /* small letter zhe */,
+        {0x0437, 0xd7} /* small letter ze */,
+        {0x0438, 0xd8} /* small letter i */,
+        {0x0439, 0xd9} /* small letter short i */,
+        {0x043a, 0xda} /* small letter ka */,
+        {0x043b, 0xdb} /* small letter el */,
+        {0x043c, 0xdc} /* small letter em */,
+        {0x043d, 0xdd} /* small letter en */,
+        {0x043e, 0xde} /* small letter o */,
+        {0x043f, 0xdf} /* small letter pe */,
+        {0x0440, 0xe0} /* small letter er */,
+        {0x0441, 0xe1} /* small letter es */,
+        {0x0442, 0xe2} /* small letter te */,
+        {0x0443, 0xe3} /* small letter u */,
+        {0x0444, 0xe4} /* small letter ef */,
+        {0x0445, 0xe5} /* small letter ha */,
+        {0x0446, 0xe6} /* small letter tse */,
+        {0x0447, 0xe7} /* small letter che */,
+        {0x0448, 0xe8} /* small letter sha */,
+        {0x0449, 0xe9} /* small letter shcha */,
+        {0x044a, 0xea} /* small letter hard sign */,
+        {0x044b, 0xeb} /* small letter yeru */,
+        {0x044c, 0xec} /* small letter soft sign */,
+        {0x044d, 0xed} /* small letter e */,
+        {0x044e, 0xee} /* small letter yu */,
+        {0x044f, 0xef} /* small letter ya */,
+        {0x0451, 0xf1} /* small letter io */
+};
+
+/*
+#define cet_ucs4_to_gost_19768_87_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_gost_19768_87_extra[cet_ucs4_to_gost_19768_87_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_gost_19768_87 =        /* defined in cet.h */
+{      
+       cet_cs_name_gost_19768_87,              /* name of character set        */
+       cet_cs_alias_gost_19768_87,             /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_gost_19768_87,             /* char to UCS-4 value table    */
+       cet_ucs4_ofs_gost_19768_87,             /* first non standard character */
+       cet_ucs4_cnt_gost_19768_87,             /* number of values in table    */
+
+       cet_ucs4_to_gost_19768_87_links,        /* UCS-4 to char links          */
+       cet_ucs4_to_gost_19768_87_ct,           /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int gost_19768_87_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x0401,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1, 0x00ad,     -1,     -1, 
+       0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 
+       0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 
+       0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 
+       0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 
+       0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 
+       0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 
+       0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 
+       0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 
+           -1, 0x0451,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/hp_roman8.h b/gpsbabel/cet/hp_roman8.h
new file mode 100644 (file)
index 0000000..8663e43
--- /dev/null
@@ -0,0 +1,219 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "hp-roman8" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef hp_roman8_h
+#define hp_roman8_h
+
+#define cet_cs_name_hp_roman8 "hp-roman8"
+
+const char *cet_cs_alias_hp_roman8[] = 
+{
+       "hp-roman8", "csHPRoman8", "r8", "roman8",
+       NULL
+};
+
+#define cet_ucs4_ofs_hp_roman8 161
+#define cet_ucs4_cnt_hp_roman8 94
+
+const int cet_ucs4_map_hp_roman8[cet_ucs4_cnt_hp_roman8] =
+{
+       0x00c0, 0x00c2, 0x00c8, 0x00ca, 0x00cb, 0x00ce, 0x00cf, 0x00b4, 
+       0x02cb, 0x02c6, 0x00a8, 0x02dc, 0x00d9, 0x00db, 0x20a4, 0x00af, 
+       0x00dd, 0x00fd, 0x00b0, 0x00c7, 0x00e7, 0x00d1, 0x00f1, 0x00a1, 
+       0x00bf, 0x00a4, 0x00a3, 0x00a5, 0x00a7, 0x0192, 0x00a2, 0x00e2, 
+       0x00ea, 0x00f4, 0x00fb, 0x00e1, 0x00e9, 0x00f3, 0x00fa, 0x00e0, 
+       0x00e8, 0x00f2, 0x00f9, 0x00e4, 0x00eb, 0x00f6, 0x00fc, 0x00c5, 
+       0x00ee, 0x00d8, 0x00c6, 0x00e5, 0x00ed, 0x00f8, 0x00e6, 0x00c4, 
+       0x00ec, 0x00d6, 0x00dc, 0x00c9, 0x00ef, 0x00df, 0x00d4, 0x00c1, 
+       0x00c3, 0x00e3, 0x00d0, 0x00f0, 0x00cd, 0x00cc, 0x00d3, 0x00d2, 
+       0x00d5, 0x00f5, 0x0160, 0x0161, 0x00da, 0x0178, 0x00ff, 0x00de, 
+       0x00fe, 0x00b7, 0x00b5, 0x00b6, 0x00be, 0x2014, 0x00bc, 0x00bd, 
+       0x00aa, 0x00ba, 0x00ab, 0x25a0, 0x00bb, 0x00b1
+};
+
+#define cet_ucs4_to_hp_roman8_ct 94
+
+const cet_ucs4_link_t cet_ucs4_to_hp_roman8_links[cet_ucs4_to_hp_roman8_ct] =
+{
+        {0x00a1, 0xb8} /* exclamation mark */,
+        {0x00a2, 0xbf} /* sign */,
+        {0x00a3, 0xbb} /* sign */,
+        {0x00a4, 0xba} /* sign */,
+        {0x00a5, 0xbc} /* sign */,
+        {0x00a7, 0xbd} /* sign */,
+        {0x00a8, 0xab} /* diaeresis */,
+        {0x00aa, 0xf9} /* ordinal indicator */,
+        {0x00ab, 0xfb} /* double angle quotation mark */,
+        {0x00af, 0xb0} /* macron */,
+        {0x00b0, 0xb3} /* sign */,
+        {0x00b1, 0xfe} /* sign */,
+        {0x00b4, 0xa8} /* accent */,
+        {0x00b5, 0xf3} /* sign */,
+        {0x00b6, 0xf4} /* sign */,
+        {0x00b7, 0xf2} /* dot */,
+        {0x00ba, 0xfa} /* ordinal indicator */,
+        {0x00bb, 0xfd} /* double angle quotation mark */,
+        {0x00bc, 0xf7} /* fraction one quarter */,
+        {0x00bd, 0xf8} /* fraction one half */,
+        {0x00be, 0xf5} /* fraction three quarters */,
+        {0x00bf, 0xb9} /* question mark */,
+        {0x00c0, 0xa1} /* capital letter a with grave */,
+        {0x00c1, 0xe0} /* capital letter a with acute */,
+        {0x00c2, 0xa2} /* capital letter a with circumflex */,
+        {0x00c3, 0xe1} /* capital letter a with tilde */,
+        {0x00c4, 0xd8} /* capital letter a with diaeresis */,
+        {0x00c5, 0xd0} /* capital letter a with ring above */,
+        {0x00c6, 0xd3} /* capital letter ae */,
+        {0x00c7, 0xb4} /* capital letter c with cedilla */,
+        {0x00c8, 0xa3} /* capital letter e with grave */,
+        {0x00c9, 0xdc} /* capital letter e with acute */,
+        {0x00ca, 0xa4} /* capital letter e with circumflex */,
+        {0x00cb, 0xa5} /* capital letter e with diaeresis */,
+        {0x00cc, 0xe6} /* capital letter i with grave */,
+        {0x00cd, 0xe5} /* capital letter i with acute */,
+        {0x00ce, 0xa6} /* capital letter i with circumflex */,
+        {0x00cf, 0xa7} /* capital letter i with diaeresis */,
+        {0x00d0, 0xe3} /* capital letter eth (icelandic) */,
+        {0x00d1, 0xb6} /* capital letter n with tilde */,
+        {0x00d2, 0xe8} /* capital letter o with grave */,
+        {0x00d3, 0xe7} /* capital letter o with acute */,
+        {0x00d4, 0xdf} /* capital letter o with circumflex */,
+        {0x00d5, 0xe9} /* capital letter o with tilde */,
+        {0x00d6, 0xda} /* capital letter o with diaeresis */,
+        {0x00d8, 0xd2} /* capital letter o with stroke */,
+        {0x00d9, 0xad} /* capital letter u with grave */,
+        {0x00da, 0xed} /* capital letter u with acute */,
+        {0x00db, 0xae} /* capital letter u with circumflex */,
+        {0x00dc, 0xdb} /* capital letter u with diaeresis */,
+        {0x00dd, 0xb1} /* capital letter y with acute */,
+        {0x00de, 0xf0} /* capital letter thorn (icelandic) */,
+        {0x00df, 0xde} /* small letter sharp s (german) */,
+        {0x00e0, 0xc8} /* small letter a with grave */,
+        {0x00e1, 0xc4} /* small letter a with acute */,
+        {0x00e2, 0xc0} /* small letter a with circumflex */,
+        {0x00e3, 0xe2} /* small letter a with tilde */,
+        {0x00e4, 0xcc} /* small letter a with diaeresis */,
+        {0x00e5, 0xd4} /* small letter a with ring above */,
+        {0x00e6, 0xd7} /* small letter ae */,
+        {0x00e7, 0xb5} /* small letter c with cedilla */,
+        {0x00e8, 0xc9} /* small letter e with grave */,
+        {0x00e9, 0xc5} /* small letter e with acute */,
+        {0x00ea, 0xc1} /* small letter e with circumflex */,
+        {0x00eb, 0xcd} /* small letter e with diaeresis */,
+        {0x00ec, 0xd9} /* small letter i with grave */,
+        {0x00ed, 0xd5} /* small letter i with acute */,
+        {0x00ee, 0xd1} /* small letter i with circumflex */,
+        {0x00ef, 0xdd} /* small letter i with diaeresis */,
+        {0x00f0, 0xe4} /* small letter eth (icelandic) */,
+        {0x00f1, 0xb7} /* small letter n with tilde */,
+        {0x00f2, 0xca} /* small letter o with grave */,
+        {0x00f3, 0xc6} /* small letter o with acute */,
+        {0x00f4, 0xc2} /* small letter o with circumflex */,
+        {0x00f5, 0xea} /* small letter o with tilde */,
+        {0x00f6, 0xce} /* small letter o with diaeresis */,
+        {0x00f8, 0xd6} /* small letter o with stroke */,
+        {0x00f9, 0xcb} /* small letter u with grave */,
+        {0x00fa, 0xc7} /* small letter u with acute */,
+        {0x00fb, 0xc3} /* small letter u with circumflex */,
+        {0x00fc, 0xcf} /* small letter u with diaeresis */,
+        {0x00fd, 0xb2} /* small letter y with acute */,
+        {0x00fe, 0xf1} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xef} /* small letter y with diaeresis */,
+        {0x0160, 0xeb} /* capital letter s with caron */,
+        {0x0161, 0xec} /* small letter s with caron */,
+        {0x0178, 0xee} /* capital letter y with diaeresis */,
+        {0x0192, 0xbe} /* minuscule latine f hameçon */,
+        {0x02c6, 0xaa} /* modificative accent circonflexe */,
+        {0x02cb, 0xa9} /* modificative accent grave */,
+        {0x02dc, 0xac} /* tilde */,
+        {0x2014, 0xf6} /* dash */,
+        {0x20a4, 0xaf} /* sign */,
+        {0x25a0, 0xfc} /* square */
+};
+
+/*
+#define cet_ucs4_to_hp_roman8_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_hp_roman8_extra[cet_ucs4_to_hp_roman8_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_hp_roman8 =    /* defined in cet.h */
+{      
+       cet_cs_name_hp_roman8,          /* name of character set        */
+       cet_cs_alias_hp_roman8,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_hp_roman8,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_hp_roman8,         /* first non standard character */
+       cet_ucs4_cnt_hp_roman8,         /* number of values in table    */
+
+       cet_ucs4_to_hp_roman8_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_hp_roman8_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int hp_roman8_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x00c0, 0x00c2, 0x00c8, 0x00ca, 0x00cb, 0x00ce, 0x00cf, 
+       0x00b4, 0x02cb, 0x02c6, 0x00a8, 0x02dc, 0x00d9, 0x00db, 0x20a4, 
+       0x00af, 0x00dd, 0x00fd, 0x00b0, 0x00c7, 0x00e7, 0x00d1, 0x00f1, 
+       0x00a1, 0x00bf, 0x00a4, 0x00a3, 0x00a5, 0x00a7, 0x0192, 0x00a2, 
+       0x00e2, 0x00ea, 0x00f4, 0x00fb, 0x00e1, 0x00e9, 0x00f3, 0x00fa, 
+       0x00e0, 0x00e8, 0x00f2, 0x00f9, 0x00e4, 0x00eb, 0x00f6, 0x00fc, 
+       0x00c5, 0x00ee, 0x00d8, 0x00c6, 0x00e5, 0x00ed, 0x00f8, 0x00e6, 
+       0x00c4, 0x00ec, 0x00d6, 0x00dc, 0x00c9, 0x00ef, 0x00df, 0x00d4, 
+       0x00c1, 0x00c3, 0x00e3, 0x00d0, 0x00f0, 0x00cd, 0x00cc, 0x00d3, 
+       0x00d2, 0x00d5, 0x00f5, 0x0160, 0x0161, 0x00da, 0x0178, 0x00ff, 
+       0x00de, 0x00fe, 0x00b7, 0x00b5, 0x00b6, 0x00be, 0x2014, 0x00bc, 
+       0x00bd, 0x00aa, 0x00ba, 0x00ab, 0x25a0, 0x00bb, 0x00b1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm037.h b/gpsbabel/cet/ibm037.h
new file mode 100644 (file)
index 0000000..67488a7
--- /dev/null
@@ -0,0 +1,381 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM037" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm037_h
+#define ibm037_h
+
+#define cet_cs_name_ibm037 "IBM037"
+
+const char *cet_cs_alias_ibm037[] = 
+{
+       "IBM037/CR-LF", "037/CR-LF", "CP037/CR-LF", "ebcdic-cp-ca", 
+       "ebcdic-cp-nl", "ebcdic-cp-us", "ebcdic-cp-wt", NULL
+};
+
+#define cet_ucs4_ofs_ibm037 4
+#define cet_ucs4_cnt_ibm037 252
+
+const int cet_ucs4_map_ibm037[cet_ucs4_cnt_ibm037] =
+{
+       0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 
+       0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 
+       0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 
+       0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 
+       0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00a2, 0x002e, 
+       0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 
+       0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x0021, 0x0024, 
+       0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x00c2, 0x00c4, 
+       0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 
+       0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 
+       0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 
+       0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 
+       0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 
+       0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 
+       0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 
+       0x00d0, 0x00dd, 0x00de, 0x00ae, 0x005e, 0x00a3, 0x00a5, 0x00b7, 
+       0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005b, 0x005d, 
+       0x00af, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 
+       0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 
+       0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 
+       0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 
+       0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 
+       0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 
+       0x00dc, 0x00d9, 0x00da, 0x009f
+};
+
+#define cet_ucs4_to_ibm037_ct 236
+
+const cet_ucs4_link_t cet_ucs4_to_ibm037_links[cet_ucs4_to_ibm037_ct] =
+{
+        {0x0004, 0x37} /* of transmission (eot) */,
+        {0x0005, 0x2d} /* (enq) */,
+        {0x0006, 0x2e} /* (ack) */,
+        {0x0007, 0x2f} /* (bel) */,
+        {0x0008, 0x16} /* (bs) */,
+        {0x0009, 0x05} /* tabulation (ht) */,
+        {0x000a, 0x25} /* feed (lf) */,
+        {0x0014, 0x3c} /* control four (dc4) */,
+        {0x0015, 0x3d} /* acknowledge (nak) */,
+        {0x0016, 0x32} /* idle (syn) */,
+        {0x0017, 0x26} /* of transmission block (etb) */,
+        {0x001a, 0x3f} /* (sub) */,
+        {0x001b, 0x27} /* (esc) */,
+        {0x0020, 0x40} /* space */,
+        {0x0021, 0x5a} /* mark */,
+        {0x0022, 0x7f} /* mark */,
+        {0x0023, 0x7b} /* sign */,
+        {0x0024, 0x5b} /* sign */,
+        {0x0025, 0x6c} /* sign */,
+        {0x0026, 0x50} /* ampersand */,
+        {0x0027, 0x7d} /* apostrophe */,
+        {0x0028, 0x4d} /* parenthesis */,
+        {0x0029, 0x5d} /* parenthesis */,
+        {0x002a, 0x5c} /* asterisk */,
+        {0x002b, 0x4e} /* sign */,
+        {0x002c, 0x6b} /* comma */,
+        {0x002d, 0x60} /* hyphen-minus */,
+        {0x002e, 0x4b} /* stop */,
+        {0x002f, 0x61} /* solidus */,
+        {0x0030, 0xf0} /* zero */,
+        {0x0031, 0xf1} /* one */,
+        {0x0032, 0xf2} /* two */,
+        {0x0033, 0xf3} /* three */,
+        {0x0034, 0xf4} /* four */,
+        {0x0035, 0xf5} /* five */,
+        {0x0036, 0xf6} /* six */,
+        {0x0037, 0xf7} /* seven */,
+        {0x0038, 0xf8} /* eight */,
+        {0x0039, 0xf9} /* nine */,
+        {0x003a, 0x7a} /* colon */,
+        {0x003b, 0x5e} /* semicolon */,
+        {0x003c, 0x4c} /* sign */,
+        {0x003d, 0x7e} /* sign */,
+        {0x003e, 0x6e} /* sign */,
+        {0x003f, 0x6f} /* mark */,
+        {0x0040, 0x7c} /* at */,
+        {0x0041, 0xc1} /* capital letter a */,
+        {0x0042, 0xc2} /* capital letter b */,
+        {0x0043, 0xc3} /* capital letter c */,
+        {0x0044, 0xc4} /* capital letter d */,
+        {0x0045, 0xc5} /* capital letter e */,
+        {0x0046, 0xc6} /* capital letter f */,
+        {0x0047, 0xc7} /* capital letter g */,
+        {0x0048, 0xc8} /* capital letter h */,
+        {0x0049, 0xc9} /* capital letter i */,
+        {0x004a, 0xd1} /* capital letter j */,
+        {0x004b, 0xd2} /* capital letter k */,
+        {0x004c, 0xd3} /* capital letter l */,
+        {0x004d, 0xd4} /* capital letter m */,
+        {0x004e, 0xd5} /* capital letter n */,
+        {0x004f, 0xd6} /* capital letter o */,
+        {0x0050, 0xd7} /* capital letter p */,
+        {0x0051, 0xd8} /* capital letter q */,
+        {0x0052, 0xd9} /* capital letter r */,
+        {0x0053, 0xe2} /* capital letter s */,
+        {0x0054, 0xe3} /* capital letter t */,
+        {0x0055, 0xe4} /* capital letter u */,
+        {0x0056, 0xe5} /* capital letter v */,
+        {0x0057, 0xe6} /* capital letter w */,
+        {0x0058, 0xe7} /* capital letter x */,
+        {0x0059, 0xe8} /* capital letter y */,
+        {0x005a, 0xe9} /* capital letter z */,
+        {0x005b, 0xba} /* square bracket */,
+        {0x005c, 0xe0} /* solidus */,
+        {0x005d, 0xbb} /* square bracket */,
+        {0x005e, 0xb0} /* accent */,
+        {0x005f, 0x6d} /* line */,
+        {0x0060, 0x79} /* accent */,
+        {0x0061, 0x81} /* small letter a */,
+        {0x0062, 0x82} /* small letter b */,
+        {0x0063, 0x83} /* small letter c */,
+        {0x0064, 0x84} /* small letter d */,
+        {0x0065, 0x85} /* small letter e */,
+        {0x0066, 0x86} /* small letter f */,
+        {0x0067, 0x87} /* small letter g */,
+        {0x0068, 0x88} /* small letter h */,
+        {0x0069, 0x89} /* small letter i */,
+        {0x006a, 0x91} /* small letter j */,
+        {0x006b, 0x92} /* small letter k */,
+        {0x006c, 0x93} /* small letter l */,
+        {0x006d, 0x94} /* small letter m */,
+        {0x006e, 0x95} /* small letter n */,
+        {0x006f, 0x96} /* small letter o */,
+        {0x0070, 0x97} /* small letter p */,
+        {0x0071, 0x98} /* small letter q */,
+        {0x0072, 0x99} /* small letter r */,
+        {0x0073, 0xa2} /* small letter s */,
+        {0x0074, 0xa3} /* small letter t */,
+        {0x0075, 0xa4} /* small letter u */,
+        {0x0076, 0xa5} /* small letter v */,
+        {0x0077, 0xa6} /* small letter w */,
+        {0x0078, 0xa7} /* small letter x */,
+        {0x0079, 0xa8} /* small letter y */,
+        {0x007a, 0xa9} /* small letter z */,
+        {0x007b, 0xc0} /* curly bracket */,
+        {0x007c, 0x4f} /* line */,
+        {0x007d, 0xd0} /* curly bracket */,
+        {0x007e, 0xa1} /* tilde */,
+        {0x007f, 0x07} /* (del) */,
+        {0x0080, 0x20} /* character (pad) */,
+        {0x0081, 0x21} /* octet preset (hop) */,
+        {0x0082, 0x22} /* permitted here (bph) */,
+        {0x0083, 0x23} /* break here (nbh) */,
+        {0x0084, 0x24} /* (ind) */,
+        {0x0085, 0x15} /* line (nel) */,
+        {0x0086, 0x06} /* of selected area (ssa) */,
+        {0x0087, 0x17} /* of selected area (esa) */,
+        {0x0088, 0x28} /* tabulation set (hts) */,
+        {0x0089, 0x29} /* tabulation with justification (htj) */,
+        {0x008a, 0x2a} /* tabulation set (vts) */,
+        {0x008b, 0x2b} /* line forward (pld) */,
+        {0x008c, 0x2c} /* line backward (plu) */,
+        {0x008d, 0x09} /* line feed (ri) */,
+        {0x008e, 0x0a} /* two (ss2) */,
+        {0x008f, 0x1b} /* three (ss3) */,
+        {0x0090, 0x30} /* control string (dcs) */,
+        {0x0091, 0x31} /* use one (pu1) */,
+        {0x0092, 0x1a} /* use two (pu2) */,
+        {0x0093, 0x33} /* transmit state (sts) */,
+        {0x0094, 0x34} /* character (cch) */,
+        {0x0095, 0x35} /* waiting (mw) */,
+        {0x0096, 0x36} /* of guarded area (spa) */,
+        {0x0097, 0x08} /* of guarded area (epa) */,
+        {0x0098, 0x38} /* of string (sos) */,
+        {0x0099, 0x39} /* graphic character introducer (sgci) */,
+        {0x009a, 0x3a} /* character introducer (sci) */,
+        {0x009b, 0x3b} /* sequence introducer (csi) */,
+        {0x009c, 0x04} /* terminator (st) */,
+        {0x009d, 0x14} /* system command (osc) */,
+        {0x009e, 0x3e} /* message (pm) */,
+        {0x009f, 0xff} /* program command (apc) */,
+        {0x00a0, 0x41} /* space */,
+        {0x00a1, 0xaa} /* exclamation mark */,
+        {0x00a2, 0x4a} /* sign */,
+        {0x00a3, 0xb1} /* sign */,
+        {0x00a4, 0x9f} /* sign */,
+        {0x00a5, 0xb2} /* sign */,
+        {0x00a6, 0x6a} /* bar */,
+        {0x00a7, 0xb5} /* sign */,
+        {0x00a8, 0xbd} /* diaeresis */,
+        {0x00a9, 0xb4} /* sign */,
+        {0x00aa, 0x9a} /* ordinal indicator */,
+        {0x00ab, 0x8a} /* double angle quotation mark */,
+        {0x00ac, 0x5f} /* sign */,
+        {0x00ad, 0xca} /* hyphen */,
+        {0x00ae, 0xaf} /* sign */,
+        {0x00af, 0xbc} /* macron */,
+        {0x00b0, 0x90} /* sign */,
+        {0x00b1, 0x8f} /* sign */,
+        {0x00b2, 0xea} /* two */,
+        {0x00b3, 0xfa} /* three */,
+        {0x00b4, 0xbe} /* accent */,
+        {0x00b5, 0xa0} /* sign */,
+        {0x00b7, 0xb3} /* dot */,
+        {0x00b8, 0x9d} /* cedilla */,
+        {0x00b9, 0xda} /* one */,
+        {0x00ba, 0x9b} /* ordinal indicator */,
+        {0x00bb, 0x8b} /* double angle quotation mark */,
+        {0x00bc, 0xb7} /* fraction one quarter */,
+        {0x00bd, 0xb8} /* fraction one half */,
+        {0x00be, 0xb9} /* fraction three quarters */,
+        {0x00bf, 0xab} /* question mark */,
+        {0x00c0, 0x64} /* capital letter a with grave */,
+        {0x00c1, 0x65} /* capital letter a with acute */,
+        {0x00c2, 0x62} /* capital letter a with circumflex */,
+        {0x00c3, 0x66} /* capital letter a with tilde */,
+        {0x00c4, 0x63} /* capital letter a with diaeresis */,
+        {0x00c5, 0x67} /* capital letter a with ring above */,
+        {0x00c6, 0x9e} /* capital letter ae */,
+        {0x00c7, 0x68} /* capital letter c with cedilla */,
+        {0x00c8, 0x74} /* capital letter e with grave */,
+        {0x00c9, 0x71} /* capital letter e with acute */,
+        {0x00ca, 0x72} /* capital letter e with circumflex */,
+        {0x00cb, 0x73} /* capital letter e with diaeresis */,
+        {0x00cc, 0x78} /* capital letter i with grave */,
+        {0x00cd, 0x75} /* capital letter i with acute */,
+        {0x00ce, 0x76} /* capital letter i with circumflex */,
+        {0x00cf, 0x77} /* capital letter i with diaeresis */,
+        {0x00d0, 0xac} /* capital letter eth (icelandic) */,
+        {0x00d1, 0x69} /* capital letter n with tilde */,
+        {0x00d2, 0xed} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xeb} /* capital letter o with circumflex */,
+        {0x00d5, 0xef} /* capital letter o with tilde */,
+        {0x00d6, 0xec} /* capital letter o with diaeresis */,
+        {0x00d7, 0xbf} /* sign */,
+        {0x00d8, 0x80} /* capital letter o with stroke */,
+        {0x00d9, 0xfd} /* capital letter u with grave */,
+        {0x00da, 0xfe} /* capital letter u with acute */,
+        {0x00db, 0xfb} /* capital letter u with circumflex */,
+        {0x00dc, 0xfc} /* capital letter u with diaeresis */,
+        {0x00dd, 0xad} /* capital letter y with acute */,
+        {0x00de, 0xae} /* capital letter thorn (icelandic) */,
+        {0x00df, 0x59} /* small letter sharp s (german) */,
+        {0x00e0, 0x44} /* small letter a with grave */,
+        {0x00e1, 0x45} /* small letter a with acute */,
+        {0x00e2, 0x42} /* small letter a with circumflex */,
+        {0x00e3, 0x46} /* small letter a with tilde */,
+        {0x00e4, 0x43} /* small letter a with diaeresis */,
+        {0x00e5, 0x47} /* small letter a with ring above */,
+        {0x00e6, 0x9c} /* small letter ae */,
+        {0x00e7, 0x48} /* small letter c with cedilla */,
+        {0x00e8, 0x54} /* small letter e with grave */,
+        {0x00e9, 0x51} /* small letter e with acute */,
+        {0x00ea, 0x52} /* small letter e with circumflex */,
+        {0x00eb, 0x53} /* small letter e with diaeresis */,
+        {0x00ec, 0x58} /* small letter i with grave */,
+        {0x00ed, 0x55} /* small letter i with acute */,
+        {0x00ee, 0x56} /* small letter i with circumflex */,
+        {0x00ef, 0x57} /* small letter i with diaeresis */,
+        {0x00f0, 0x8c} /* small letter eth (icelandic) */,
+        {0x00f1, 0x49} /* small letter n with tilde */,
+        {0x00f2, 0xcd} /* small letter o with grave */,
+        {0x00f3, 0xce} /* small letter o with acute */,
+        {0x00f4, 0xcb} /* small letter o with circumflex */,
+        {0x00f5, 0xcf} /* small letter o with tilde */,
+        {0x00f6, 0xcc} /* small letter o with diaeresis */,
+        {0x00f7, 0xe1} /* sign */,
+        {0x00f8, 0x70} /* small letter o with stroke */,
+        {0x00f9, 0xdd} /* small letter u with grave */,
+        {0x00fa, 0xde} /* small letter u with acute */,
+        {0x00fb, 0xdb} /* small letter u with circumflex */,
+        {0x00fc, 0xdc} /* small letter u with diaeresis */,
+        {0x00fd, 0x8d} /* small letter y with acute */,
+        {0x00fe, 0x8e} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xdf} /* small letter y with diaeresis */
+};
+
+/*
+#define cet_ucs4_to_ibm037_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm037_extra[cet_ucs4_to_ibm037_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm037 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm037,             /* name of character set        */
+       cet_cs_alias_ibm037,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm037,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm037,            /* first non standard character */
+       cet_ucs4_cnt_ibm037,            /* number of values in table    */
+
+       cet_ucs4_to_ibm037_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm037_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm037_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 
+       0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 
+       0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 
+       0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 
+       0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 
+       0x00e7, 0x00f1, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 
+       0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 
+       0x00ec, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 
+       0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 
+       0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 
+       0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 
+       0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 
+       0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 
+       0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 
+       0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 
+       0x005e, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 
+       0x00bd, 0x00be, 0x005b, 0x005d, 0x00af, 0x00a8, 0x00b4, 0x00d7, 
+       0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 
+       0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 
+       0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm1004.h b/gpsbabel/cet/ibm1004.h
new file mode 100644 (file)
index 0000000..d05fe37
--- /dev/null
@@ -0,0 +1,152 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM1004" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm1004_h
+#define ibm1004_h
+
+#define cet_cs_name_ibm1004 "IBM1004"
+
+const char *cet_cs_alias_ibm1004[] = 
+{
+       "IBM1004/CR-LF", "1004/CR-LF", "CP1004/CR-LF", "os2latin1",
+       NULL
+};
+
+#define cet_ucs4_ofs_ibm1004 128
+#define cet_ucs4_cnt_ibm1004 128
+
+const int cet_ucs4_map_ibm1004[cet_ucs4_cnt_ibm1004] =
+{
+           -1,     -1, 0x201a,     -1, 0x201e, 0x2026, 0x2020, 0x2021, 
+       0x02c6, 0x2030, 0x0160, 0x2039, 0x0152,     -1,     -1,     -1, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+       0x02dc, 0x2122, 0x0161, 0x203a, 0x0153,     -1,     -1, 0x0178, 
+       0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+       0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 
+       0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 
+       0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 
+       0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 
+       0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+
+#define cet_ucs4_to_ibm1004_ct 23
+
+const cet_ucs4_link_t cet_ucs4_to_ibm1004_links[cet_ucs4_to_ibm1004_ct] =
+{
+        {0x0152, 0x8c} /* capital ligature oe */,
+        {0x0153, 0x9c} /* small ligature oe */,
+        {0x0160, 0x8a} /* capital letter s with caron */,
+        {0x0161, 0x9a} /* small letter s with caron */,
+        {0x0178, 0x9f} /* capital letter y with diaeresis */,
+        {0x02c6, 0x88} /* modificative accent circonflexe */,
+        {0x02dc, 0x98} /* tilde */,
+        {0x2013, 0x96} /* dash */,
+        {0x2014, 0x97} /* dash */,
+        {0x2018, 0x91} /* single quotation mark */,
+        {0x2019, 0x92} /* single quotation mark */,
+        {0x201a, 0x82} /* low-9 quotation mark */,
+        {0x201c, 0x93} /* double quotation mark */,
+        {0x201d, 0x94} /* double quotation mark */,
+        {0x201e, 0x84} /* low-9 quotation mark */,
+        {0x2020, 0x86} /* dagger */,
+        {0x2021, 0x87} /* dagger */,
+        {0x2022, 0x95} /* puce */,
+        {0x2026, 0x85} /* horizontal ellipsis */,
+        {0x2030, 0x89} /* mille sign */,
+        {0x2039, 0x8b} /* left-pointing angle quotation mark */,
+        {0x203a, 0x9b} /* right-pointing angle quotation mark */,
+        {0x2122, 0x99} /* mark sign */
+};
+
+/*
+#define cet_ucs4_to_ibm1004_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm1004_extra[cet_ucs4_to_ibm1004_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm1004 =      /* defined in cet.h */
+{      
+       cet_cs_name_ibm1004,            /* name of character set        */
+       cet_cs_alias_ibm1004,           /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm1004,           /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm1004,           /* first non standard character */
+       cet_ucs4_cnt_ibm1004,           /* number of values in table    */
+
+       cet_ucs4_to_ibm1004_links,      /* UCS-4 to char links          */
+       cet_ucs4_to_ibm1004_ct,         /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm1004_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+           -1,     -1, 0x201a,     -1, 0x201e, 0x2026, 0x2020, 0x2021, 
+       0x02c6, 0x2030, 0x0160, 0x2039, 0x0152,     -1,     -1,     -1, 
+           -1, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 
+       0x02dc, 0x2122, 0x0161, 0x203a, 0x0153,     -1,     -1, 0x0178, 
+       0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+       0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 
+       0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 
+       0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 
+       0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 
+       0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm1026.h b/gpsbabel/cet/ibm1026.h
new file mode 100644 (file)
index 0000000..8b528c3
--- /dev/null
@@ -0,0 +1,380 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM1026" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm1026_h
+#define ibm1026_h
+
+#define cet_cs_name_ibm1026 "IBM1026"
+
+const char *cet_cs_alias_ibm1026[] = 
+{
+       "IBM1026/CR-LF", "1026/CR-LF", "CP1026/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm1026 4
+#define cet_ucs4_cnt_ibm1026 252
+
+const int cet_ucs4_map_ibm1026[cet_ucs4_cnt_ibm1026] =
+{
+       0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 
+       0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 
+       0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 
+       0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 
+       0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x007b, 0x00f1, 0x00c7, 0x002e, 
+       0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 
+       0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x011e, 0x0130, 
+       0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 
+       0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x005b, 0x00d1, 0x015f, 0x002c, 
+       0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0131, 0x003a, 0x00d6, 
+       0x015e, 0x0027, 0x003d, 0x00dc, 0x00d8, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 
+       0x007d, 0x0060, 0x00a6, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 
+       0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 
+       0x00e6, 0x02db, 0x00c6, 0x00a4, 0x00b5, 0x00f6, 0x0073, 0x0074, 
+       0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 
+       0x005d, 0x0024, 0x0040, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 
+       0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 
+       0x2014, 0x00a8, 0x00b4, 0x00d7, 0x00e7, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 
+       0x007e, 0x00f2, 0x00f3, 0x00f5, 0x011f, 0x004a, 0x004b, 0x004c, 
+       0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 
+       0x005c, 0x00f9, 0x00fa, 0x00ff, 0x00fc, 0x00f7, 0x0053, 0x0054, 
+       0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 
+       0x0023, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 
+       0x0022, 0x00d9, 0x00da, 0x009f
+};
+
+#define cet_ucs4_to_ibm1026_ct 236
+
+const cet_ucs4_link_t cet_ucs4_to_ibm1026_links[cet_ucs4_to_ibm1026_ct] =
+{
+        {0x0004, 0x37} /* of transmission (eot) */,
+        {0x0005, 0x2d} /* (enq) */,
+        {0x0006, 0x2e} /* (ack) */,
+        {0x0007, 0x2f} /* (bel) */,
+        {0x0008, 0x16} /* (bs) */,
+        {0x0009, 0x05} /* tabulation (ht) */,
+        {0x000a, 0x25} /* feed (lf) */,
+        {0x0014, 0x3c} /* control four (dc4) */,
+        {0x0015, 0x3d} /* acknowledge (nak) */,
+        {0x0016, 0x32} /* idle (syn) */,
+        {0x0017, 0x26} /* of transmission block (etb) */,
+        {0x001a, 0x3f} /* (sub) */,
+        {0x001b, 0x27} /* (esc) */,
+        {0x0020, 0x40} /* space */,
+        {0x0021, 0x4f} /* mark */,
+        {0x0022, 0xfc} /* mark */,
+        {0x0023, 0xec} /* sign */,
+        {0x0024, 0xad} /* sign */,
+        {0x0025, 0x6c} /* sign */,
+        {0x0026, 0x50} /* ampersand */,
+        {0x0027, 0x7d} /* apostrophe */,
+        {0x0028, 0x4d} /* parenthesis */,
+        {0x0029, 0x5d} /* parenthesis */,
+        {0x002a, 0x5c} /* asterisk */,
+        {0x002b, 0x4e} /* sign */,
+        {0x002c, 0x6b} /* comma */,
+        {0x002d, 0x60} /* hyphen-minus */,
+        {0x002e, 0x4b} /* stop */,
+        {0x002f, 0x61} /* solidus */,
+        {0x0030, 0xf0} /* zero */,
+        {0x0031, 0xf1} /* one */,
+        {0x0032, 0xf2} /* two */,
+        {0x0033, 0xf3} /* three */,
+        {0x0034, 0xf4} /* four */,
+        {0x0035, 0xf5} /* five */,
+        {0x0036, 0xf6} /* six */,
+        {0x0037, 0xf7} /* seven */,
+        {0x0038, 0xf8} /* eight */,
+        {0x0039, 0xf9} /* nine */,
+        {0x003a, 0x7a} /* colon */,
+        {0x003b, 0x5e} /* semicolon */,
+        {0x003c, 0x4c} /* sign */,
+        {0x003d, 0x7e} /* sign */,
+        {0x003e, 0x6e} /* sign */,
+        {0x003f, 0x6f} /* mark */,
+        {0x0040, 0xae} /* at */,
+        {0x0041, 0xc1} /* capital letter a */,
+        {0x0042, 0xc2} /* capital letter b */,
+        {0x0043, 0xc3} /* capital letter c */,
+        {0x0044, 0xc4} /* capital letter d */,
+        {0x0045, 0xc5} /* capital letter e */,
+        {0x0046, 0xc6} /* capital letter f */,
+        {0x0047, 0xc7} /* capital letter g */,
+        {0x0048, 0xc8} /* capital letter h */,
+        {0x0049, 0xc9} /* capital letter i */,
+        {0x004a, 0xd1} /* capital letter j */,
+        {0x004b, 0xd2} /* capital letter k */,
+        {0x004c, 0xd3} /* capital letter l */,
+        {0x004d, 0xd4} /* capital letter m */,
+        {0x004e, 0xd5} /* capital letter n */,
+        {0x004f, 0xd6} /* capital letter o */,
+        {0x0050, 0xd7} /* capital letter p */,
+        {0x0051, 0xd8} /* capital letter q */,
+        {0x0052, 0xd9} /* capital letter r */,
+        {0x0053, 0xe2} /* capital letter s */,
+        {0x0054, 0xe3} /* capital letter t */,
+        {0x0055, 0xe4} /* capital letter u */,
+        {0x0056, 0xe5} /* capital letter v */,
+        {0x0057, 0xe6} /* capital letter w */,
+        {0x0058, 0xe7} /* capital letter x */,
+        {0x0059, 0xe8} /* capital letter y */,
+        {0x005a, 0xe9} /* capital letter z */,
+        {0x005b, 0x68} /* square bracket */,
+        {0x005c, 0xdc} /* solidus */,
+        {0x005d, 0xac} /* square bracket */,
+        {0x005e, 0x5f} /* accent */,
+        {0x005f, 0x6d} /* line */,
+        {0x0060, 0x8d} /* accent */,
+        {0x0061, 0x81} /* small letter a */,
+        {0x0062, 0x82} /* small letter b */,
+        {0x0063, 0x83} /* small letter c */,
+        {0x0064, 0x84} /* small letter d */,
+        {0x0065, 0x85} /* small letter e */,
+        {0x0066, 0x86} /* small letter f */,
+        {0x0067, 0x87} /* small letter g */,
+        {0x0068, 0x88} /* small letter h */,
+        {0x0069, 0x89} /* small letter i */,
+        {0x006a, 0x91} /* small letter j */,
+        {0x006b, 0x92} /* small letter k */,
+        {0x006c, 0x93} /* small letter l */,
+        {0x006d, 0x94} /* small letter m */,
+        {0x006e, 0x95} /* small letter n */,
+        {0x006f, 0x96} /* small letter o */,
+        {0x0070, 0x97} /* small letter p */,
+        {0x0071, 0x98} /* small letter q */,
+        {0x0072, 0x99} /* small letter r */,
+        {0x0073, 0xa2} /* small letter s */,
+        {0x0074, 0xa3} /* small letter t */,
+        {0x0075, 0xa4} /* small letter u */,
+        {0x0076, 0xa5} /* small letter v */,
+        {0x0077, 0xa6} /* small letter w */,
+        {0x0078, 0xa7} /* small letter x */,
+        {0x0079, 0xa8} /* small letter y */,
+        {0x007a, 0xa9} /* small letter z */,
+        {0x007b, 0x48} /* curly bracket */,
+        {0x007c, 0xbb} /* line */,
+        {0x007d, 0x8c} /* curly bracket */,
+        {0x007e, 0xcc} /* tilde */,
+        {0x007f, 0x07} /* (del) */,
+        {0x0080, 0x20} /* character (pad) */,
+        {0x0081, 0x21} /* octet preset (hop) */,
+        {0x0082, 0x22} /* permitted here (bph) */,
+        {0x0083, 0x23} /* break here (nbh) */,
+        {0x0084, 0x24} /* (ind) */,
+        {0x0085, 0x15} /* line (nel) */,
+        {0x0086, 0x06} /* of selected area (ssa) */,
+        {0x0087, 0x17} /* of selected area (esa) */,
+        {0x0088, 0x28} /* tabulation set (hts) */,
+        {0x0089, 0x29} /* tabulation with justification (htj) */,
+        {0x008a, 0x2a} /* tabulation set (vts) */,
+        {0x008b, 0x2b} /* line forward (pld) */,
+        {0x008c, 0x2c} /* line backward (plu) */,
+        {0x008d, 0x09} /* line feed (ri) */,
+        {0x008e, 0x0a} /* two (ss2) */,
+        {0x008f, 0x1b} /* three (ss3) */,
+        {0x0090, 0x30} /* control string (dcs) */,
+        {0x0091, 0x31} /* use one (pu1) */,
+        {0x0092, 0x1a} /* use two (pu2) */,
+        {0x0093, 0x33} /* transmit state (sts) */,
+        {0x0094, 0x34} /* character (cch) */,
+        {0x0095, 0x35} /* waiting (mw) */,
+        {0x0096, 0x36} /* of guarded area (spa) */,
+        {0x0097, 0x08} /* of guarded area (epa) */,
+        {0x0098, 0x38} /* of string (sos) */,
+        {0x0099, 0x39} /* graphic character introducer (sgci) */,
+        {0x009a, 0x3a} /* character introducer (sci) */,
+        {0x009b, 0x3b} /* sequence introducer (csi) */,
+        {0x009c, 0x04} /* terminator (st) */,
+        {0x009d, 0x14} /* system command (osc) */,
+        {0x009e, 0x3e} /* message (pm) */,
+        {0x009f, 0xff} /* program command (apc) */,
+        {0x00a0, 0x41} /* space */,
+        {0x00a1, 0xaa} /* exclamation mark */,
+        {0x00a2, 0xb0} /* sign */,
+        {0x00a3, 0xb1} /* sign */,
+        {0x00a4, 0x9f} /* sign */,
+        {0x00a5, 0xb2} /* sign */,
+        {0x00a6, 0x8e} /* bar */,
+        {0x00a7, 0xb5} /* sign */,
+        {0x00a8, 0xbd} /* diaeresis */,
+        {0x00a9, 0xb4} /* sign */,
+        {0x00aa, 0x9a} /* ordinal indicator */,
+        {0x00ab, 0x8a} /* double angle quotation mark */,
+        {0x00ac, 0xba} /* sign */,
+        {0x00ad, 0xca} /* hyphen */,
+        {0x00ae, 0xaf} /* sign */,
+        {0x00b0, 0x90} /* sign */,
+        {0x00b1, 0x8f} /* sign */,
+        {0x00b2, 0xea} /* two */,
+        {0x00b3, 0xfa} /* three */,
+        {0x00b4, 0xbe} /* accent */,
+        {0x00b5, 0xa0} /* sign */,
+        {0x00b7, 0xb3} /* dot */,
+        {0x00b9, 0xda} /* one */,
+        {0x00ba, 0x9b} /* ordinal indicator */,
+        {0x00bb, 0x8b} /* double angle quotation mark */,
+        {0x00bc, 0xb7} /* fraction one quarter */,
+        {0x00bd, 0xb8} /* fraction one half */,
+        {0x00be, 0xb9} /* fraction three quarters */,
+        {0x00bf, 0xab} /* question mark */,
+        {0x00c0, 0x64} /* capital letter a with grave */,
+        {0x00c1, 0x65} /* capital letter a with acute */,
+        {0x00c2, 0x62} /* capital letter a with circumflex */,
+        {0x00c3, 0x66} /* capital letter a with tilde */,
+        {0x00c4, 0x63} /* capital letter a with diaeresis */,
+        {0x00c5, 0x67} /* capital letter a with ring above */,
+        {0x00c6, 0x9e} /* capital letter ae */,
+        {0x00c7, 0x4a} /* capital letter c with cedilla */,
+        {0x00c8, 0x74} /* capital letter e with grave */,
+        {0x00c9, 0x71} /* capital letter e with acute */,
+        {0x00ca, 0x72} /* capital letter e with circumflex */,
+        {0x00cb, 0x73} /* capital letter e with diaeresis */,
+        {0x00cc, 0x78} /* capital letter i with grave */,
+        {0x00cd, 0x75} /* capital letter i with acute */,
+        {0x00ce, 0x76} /* capital letter i with circumflex */,
+        {0x00cf, 0x77} /* capital letter i with diaeresis */,
+        {0x00d1, 0x69} /* capital letter n with tilde */,
+        {0x00d2, 0xed} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xeb} /* capital letter o with circumflex */,
+        {0x00d5, 0xef} /* capital letter o with tilde */,
+        {0x00d6, 0x7b} /* capital letter o with diaeresis */,
+        {0x00d7, 0xbf} /* sign */,
+        {0x00d8, 0x80} /* capital letter o with stroke */,
+        {0x00d9, 0xfd} /* capital letter u with grave */,
+        {0x00da, 0xfe} /* capital letter u with acute */,
+        {0x00db, 0xfb} /* capital letter u with circumflex */,
+        {0x00dc, 0x7f} /* capital letter u with diaeresis */,
+        {0x00df, 0x59} /* small letter sharp s (german) */,
+        {0x00e0, 0x44} /* small letter a with grave */,
+        {0x00e1, 0x45} /* small letter a with acute */,
+        {0x00e2, 0x42} /* small letter a with circumflex */,
+        {0x00e3, 0x46} /* small letter a with tilde */,
+        {0x00e4, 0x43} /* small letter a with diaeresis */,
+        {0x00e5, 0x47} /* small letter a with ring above */,
+        {0x00e6, 0x9c} /* small letter ae */,
+        {0x00e7, 0xc0} /* small letter c with cedilla */,
+        {0x00e8, 0x54} /* small letter e with grave */,
+        {0x00e9, 0x51} /* small letter e with acute */,
+        {0x00ea, 0x52} /* small letter e with circumflex */,
+        {0x00eb, 0x53} /* small letter e with diaeresis */,
+        {0x00ec, 0x58} /* small letter i with grave */,
+        {0x00ed, 0x55} /* small letter i with acute */,
+        {0x00ee, 0x56} /* small letter i with circumflex */,
+        {0x00ef, 0x57} /* small letter i with diaeresis */,
+        {0x00f1, 0x49} /* small letter n with tilde */,
+        {0x00f2, 0xcd} /* small letter o with grave */,
+        {0x00f3, 0xce} /* small letter o with acute */,
+        {0x00f4, 0xcb} /* small letter o with circumflex */,
+        {0x00f5, 0xcf} /* small letter o with tilde */,
+        {0x00f6, 0xa1} /* small letter o with diaeresis */,
+        {0x00f7, 0xe1} /* sign */,
+        {0x00f8, 0x70} /* small letter o with stroke */,
+        {0x00f9, 0xdd} /* small letter u with grave */,
+        {0x00fa, 0xde} /* small letter u with acute */,
+        {0x00fb, 0xdb} /* small letter u with circumflex */,
+        {0x00fc, 0xe0} /* small letter u with diaeresis */,
+        {0x00ff, 0xdf} /* small letter y with diaeresis */,
+        {0x011e, 0x5a} /* capital letter g with breve */,
+        {0x011f, 0xd0} /* small letter g with breve */,
+        {0x0130, 0x5b} /* capital letter i with dot above */,
+        {0x0131, 0x79} /* small letter i dotless */,
+        {0x015e, 0x7c} /* capital letter s with cedilla */,
+        {0x015f, 0x6a} /* small letter s with cedilla */,
+        {0x02db, 0x9d} /* ogonek */,
+        {0x2014, 0xbc} /* dash */
+};
+
+/*
+#define cet_ucs4_to_ibm1026_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm1026_extra[cet_ucs4_to_ibm1026_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm1026 =      /* defined in cet.h */
+{      
+       cet_cs_name_ibm1026,            /* name of character set        */
+       cet_cs_alias_ibm1026,           /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm1026,           /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm1026,           /* first non standard character */
+       cet_ucs4_cnt_ibm1026,           /* number of values in table    */
+
+       cet_ucs4_to_ibm1026_links,      /* UCS-4 to char links          */
+       cet_ucs4_to_ibm1026_ct,         /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm1026_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 
+       0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 
+       0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 
+       0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 
+       0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 
+       0x007b, 0x00f1, 0x00c7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 
+       0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 
+       0x00ec, 0x00df, 0x011e, 0x0130, 0x002a, 0x0029, 0x003b, 0x005e, 
+       0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 
+       0x005b, 0x00d1, 0x015f, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 
+       0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 
+       0x00cc, 0x0131, 0x003a, 0x00d6, 0x015e, 0x0027, 0x003d, 0x00dc, 
+       0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x00ab, 0x00bb, 0x007d, 0x0060, 0x00a6, 0x00b1, 
+       0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x02db, 0x00c6, 0x00a4, 
+       0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x00a1, 0x00bf, 0x005d, 0x0024, 0x0040, 0x00ae, 
+       0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 
+       0x00bd, 0x00be, 0x00ac, 0x007c, 0x2014, 0x00a8, 0x00b4, 0x00d7, 
+       0x00e7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x00f5, 
+       0x011f, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x00b9, 0x00fb, 0x005c, 0x00f9, 0x00fa, 0x00ff, 
+       0x00fc, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x00b2, 0x00d4, 0x0023, 0x00d2, 0x00d3, 0x00d5, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x00b3, 0x00db, 0x0022, 0x00d9, 0x00da, 0x009f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm1047.h b/gpsbabel/cet/ibm1047.h
new file mode 100644 (file)
index 0000000..21447e1
--- /dev/null
@@ -0,0 +1,380 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM1047" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm1047_h
+#define ibm1047_h
+
+#define cet_cs_name_ibm1047 "IBM1047"
+
+const char *cet_cs_alias_ibm1047[] = 
+{
+       "IBM1047/CR-LF", "1047/CR-LF", "CP1047/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm1047 4
+#define cet_ucs4_cnt_ibm1047 252
+
+const int cet_ucs4_map_ibm1047[cet_ucs4_cnt_ibm1047] =
+{
+       0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 
+       0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 
+       0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 
+       0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 
+       0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00a2, 0x002e, 
+       0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 
+       0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x0021, 0x0024, 
+       0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 
+       0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 
+       0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 
+       0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 
+       0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 
+       0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 
+       0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 
+       0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 
+       0x00d0, 0x005b, 0x00de, 0x00ae, 0x00ac, 0x00a3, 0x00a5, 0x00b7, 
+       0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00dd, 0x00a8, 
+       0x00af, 0x005d, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 
+       0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 
+       0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 
+       0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 
+       0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 
+       0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 
+       0x00dc, 0x00d9, 0x00da, 0x009f
+};
+
+#define cet_ucs4_to_ibm1047_ct 236
+
+const cet_ucs4_link_t cet_ucs4_to_ibm1047_links[cet_ucs4_to_ibm1047_ct] =
+{
+        {0x0004, 0x37} /* of transmission (eot) */,
+        {0x0005, 0x2d} /* (enq) */,
+        {0x0006, 0x2e} /* (ack) */,
+        {0x0007, 0x2f} /* (bel) */,
+        {0x0008, 0x16} /* (bs) */,
+        {0x0009, 0x05} /* tabulation (ht) */,
+        {0x000a, 0x25} /* feed (lf) */,
+        {0x0014, 0x3c} /* control four (dc4) */,
+        {0x0015, 0x3d} /* acknowledge (nak) */,
+        {0x0016, 0x32} /* idle (syn) */,
+        {0x0017, 0x26} /* of transmission block (etb) */,
+        {0x001a, 0x3f} /* (sub) */,
+        {0x001b, 0x27} /* (esc) */,
+        {0x0020, 0x40} /* space */,
+        {0x0021, 0x5a} /* mark */,
+        {0x0022, 0x7f} /* mark */,
+        {0x0023, 0x7b} /* sign */,
+        {0x0024, 0x5b} /* sign */,
+        {0x0025, 0x6c} /* sign */,
+        {0x0026, 0x50} /* ampersand */,
+        {0x0027, 0x7d} /* apostrophe */,
+        {0x0028, 0x4d} /* parenthesis */,
+        {0x0029, 0x5d} /* parenthesis */,
+        {0x002a, 0x5c} /* asterisk */,
+        {0x002b, 0x4e} /* sign */,
+        {0x002c, 0x6b} /* comma */,
+        {0x002d, 0x60} /* hyphen-minus */,
+        {0x002e, 0x4b} /* stop */,
+        {0x002f, 0x61} /* solidus */,
+        {0x0030, 0xf0} /* zero */,
+        {0x0031, 0xf1} /* one */,
+        {0x0032, 0xf2} /* two */,
+        {0x0033, 0xf3} /* three */,
+        {0x0034, 0xf4} /* four */,
+        {0x0035, 0xf5} /* five */,
+        {0x0036, 0xf6} /* six */,
+        {0x0037, 0xf7} /* seven */,
+        {0x0038, 0xf8} /* eight */,
+        {0x0039, 0xf9} /* nine */,
+        {0x003a, 0x7a} /* colon */,
+        {0x003b, 0x5e} /* semicolon */,
+        {0x003c, 0x4c} /* sign */,
+        {0x003d, 0x7e} /* sign */,
+        {0x003e, 0x6e} /* sign */,
+        {0x003f, 0x6f} /* mark */,
+        {0x0040, 0x7c} /* at */,
+        {0x0041, 0xc1} /* capital letter a */,
+        {0x0042, 0xc2} /* capital letter b */,
+        {0x0043, 0xc3} /* capital letter c */,
+        {0x0044, 0xc4} /* capital letter d */,
+        {0x0045, 0xc5} /* capital letter e */,
+        {0x0046, 0xc6} /* capital letter f */,
+        {0x0047, 0xc7} /* capital letter g */,
+        {0x0048, 0xc8} /* capital letter h */,
+        {0x0049, 0xc9} /* capital letter i */,
+        {0x004a, 0xd1} /* capital letter j */,
+        {0x004b, 0xd2} /* capital letter k */,
+        {0x004c, 0xd3} /* capital letter l */,
+        {0x004d, 0xd4} /* capital letter m */,
+        {0x004e, 0xd5} /* capital letter n */,
+        {0x004f, 0xd6} /* capital letter o */,
+        {0x0050, 0xd7} /* capital letter p */,
+        {0x0051, 0xd8} /* capital letter q */,
+        {0x0052, 0xd9} /* capital letter r */,
+        {0x0053, 0xe2} /* capital letter s */,
+        {0x0054, 0xe3} /* capital letter t */,
+        {0x0055, 0xe4} /* capital letter u */,
+        {0x0056, 0xe5} /* capital letter v */,
+        {0x0057, 0xe6} /* capital letter w */,
+        {0x0058, 0xe7} /* capital letter x */,
+        {0x0059, 0xe8} /* capital letter y */,
+        {0x005a, 0xe9} /* capital letter z */,
+        {0x005b, 0xad} /* square bracket */,
+        {0x005c, 0xe0} /* solidus */,
+        {0x005d, 0xbd} /* square bracket */,
+        {0x005e, 0x5f} /* accent */,
+        {0x005f, 0x6d} /* line */,
+        {0x0060, 0x79} /* accent */,
+        {0x0061, 0x81} /* small letter a */,
+        {0x0062, 0x82} /* small letter b */,
+        {0x0063, 0x83} /* small letter c */,
+        {0x0064, 0x84} /* small letter d */,
+        {0x0065, 0x85} /* small letter e */,
+        {0x0066, 0x86} /* small letter f */,
+        {0x0067, 0x87} /* small letter g */,
+        {0x0068, 0x88} /* small letter h */,
+        {0x0069, 0x89} /* small letter i */,
+        {0x006a, 0x91} /* small letter j */,
+        {0x006b, 0x92} /* small letter k */,
+        {0x006c, 0x93} /* small letter l */,
+        {0x006d, 0x94} /* small letter m */,
+        {0x006e, 0x95} /* small letter n */,
+        {0x006f, 0x96} /* small letter o */,
+        {0x0070, 0x97} /* small letter p */,
+        {0x0071, 0x98} /* small letter q */,
+        {0x0072, 0x99} /* small letter r */,
+        {0x0073, 0xa2} /* small letter s */,
+        {0x0074, 0xa3} /* small letter t */,
+        {0x0075, 0xa4} /* small letter u */,
+        {0x0076, 0xa5} /* small letter v */,
+        {0x0077, 0xa6} /* small letter w */,
+        {0x0078, 0xa7} /* small letter x */,
+        {0x0079, 0xa8} /* small letter y */,
+        {0x007a, 0xa9} /* small letter z */,
+        {0x007b, 0xc0} /* curly bracket */,
+        {0x007c, 0x4f} /* line */,
+        {0x007d, 0xd0} /* curly bracket */,
+        {0x007e, 0xa1} /* tilde */,
+        {0x007f, 0x07} /* (del) */,
+        {0x0080, 0x20} /* character (pad) */,
+        {0x0081, 0x21} /* octet preset (hop) */,
+        {0x0082, 0x22} /* permitted here (bph) */,
+        {0x0083, 0x23} /* break here (nbh) */,
+        {0x0084, 0x24} /* (ind) */,
+        {0x0085, 0x15} /* line (nel) */,
+        {0x0086, 0x06} /* of selected area (ssa) */,
+        {0x0087, 0x17} /* of selected area (esa) */,
+        {0x0088, 0x28} /* tabulation set (hts) */,
+        {0x0089, 0x29} /* tabulation with justification (htj) */,
+        {0x008a, 0x2a} /* tabulation set (vts) */,
+        {0x008b, 0x2b} /* line forward (pld) */,
+        {0x008c, 0x2c} /* line backward (plu) */,
+        {0x008d, 0x09} /* line feed (ri) */,
+        {0x008e, 0x0a} /* two (ss2) */,
+        {0x008f, 0x1b} /* three (ss3) */,
+        {0x0090, 0x30} /* control string (dcs) */,
+        {0x0091, 0x31} /* use one (pu1) */,
+        {0x0092, 0x1a} /* use two (pu2) */,
+        {0x0093, 0x33} /* transmit state (sts) */,
+        {0x0094, 0x34} /* character (cch) */,
+        {0x0095, 0x35} /* waiting (mw) */,
+        {0x0096, 0x36} /* of guarded area (spa) */,
+        {0x0097, 0x08} /* of guarded area (epa) */,
+        {0x0098, 0x38} /* of string (sos) */,
+        {0x0099, 0x39} /* graphic character introducer (sgci) */,
+        {0x009a, 0x3a} /* character introducer (sci) */,
+        {0x009b, 0x3b} /* sequence introducer (csi) */,
+        {0x009c, 0x04} /* terminator (st) */,
+        {0x009d, 0x14} /* system command (osc) */,
+        {0x009e, 0x3e} /* message (pm) */,
+        {0x009f, 0xff} /* program command (apc) */,
+        {0x00a0, 0x41} /* space */,
+        {0x00a1, 0xaa} /* exclamation mark */,
+        {0x00a2, 0x4a} /* sign */,
+        {0x00a3, 0xb1} /* sign */,
+        {0x00a4, 0x9f} /* sign */,
+        {0x00a5, 0xb2} /* sign */,
+        {0x00a6, 0x6a} /* bar */,
+        {0x00a7, 0xb5} /* sign */,
+        {0x00a8, 0xbb} /* diaeresis */,
+        {0x00a9, 0xb4} /* sign */,
+        {0x00aa, 0x9a} /* ordinal indicator */,
+        {0x00ab, 0x8a} /* double angle quotation mark */,
+        {0x00ac, 0xb0} /* sign */,
+        {0x00ad, 0xca} /* hyphen */,
+        {0x00ae, 0xaf} /* sign */,
+        {0x00af, 0xbc} /* macron */,
+        {0x00b0, 0x90} /* sign */,
+        {0x00b1, 0x8f} /* sign */,
+        {0x00b2, 0xea} /* two */,
+        {0x00b3, 0xfa} /* three */,
+        {0x00b4, 0xbe} /* accent */,
+        {0x00b5, 0xa0} /* sign */,
+        {0x00b7, 0xb3} /* dot */,
+        {0x00b8, 0x9d} /* cedilla */,
+        {0x00b9, 0xda} /* one */,
+        {0x00ba, 0x9b} /* ordinal indicator */,
+        {0x00bb, 0x8b} /* double angle quotation mark */,
+        {0x00bc, 0xb7} /* fraction one quarter */,
+        {0x00bd, 0xb8} /* fraction one half */,
+        {0x00be, 0xb9} /* fraction three quarters */,
+        {0x00bf, 0xab} /* question mark */,
+        {0x00c0, 0x64} /* capital letter a with grave */,
+        {0x00c1, 0x65} /* capital letter a with acute */,
+        {0x00c2, 0x62} /* capital letter a with circumflex */,
+        {0x00c3, 0x66} /* capital letter a with tilde */,
+        {0x00c4, 0x63} /* capital letter a with diaeresis */,
+        {0x00c5, 0x67} /* capital letter a with ring above */,
+        {0x00c6, 0x9e} /* capital letter ae */,
+        {0x00c7, 0x68} /* capital letter c with cedilla */,
+        {0x00c8, 0x74} /* capital letter e with grave */,
+        {0x00c9, 0x71} /* capital letter e with acute */,
+        {0x00ca, 0x72} /* capital letter e with circumflex */,
+        {0x00cb, 0x73} /* capital letter e with diaeresis */,
+        {0x00cc, 0x78} /* capital letter i with grave */,
+        {0x00cd, 0x75} /* capital letter i with acute */,
+        {0x00ce, 0x76} /* capital letter i with circumflex */,
+        {0x00cf, 0x77} /* capital letter i with diaeresis */,
+        {0x00d0, 0xac} /* capital letter eth (icelandic) */,
+        {0x00d1, 0x69} /* capital letter n with tilde */,
+        {0x00d2, 0xed} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xeb} /* capital letter o with circumflex */,
+        {0x00d5, 0xef} /* capital letter o with tilde */,
+        {0x00d6, 0xec} /* capital letter o with diaeresis */,
+        {0x00d7, 0xbf} /* sign */,
+        {0x00d8, 0x80} /* capital letter o with stroke */,
+        {0x00d9, 0xfd} /* capital letter u with grave */,
+        {0x00da, 0xfe} /* capital letter u with acute */,
+        {0x00db, 0xfb} /* capital letter u with circumflex */,
+        {0x00dc, 0xfc} /* capital letter u with diaeresis */,
+        {0x00dd, 0xba} /* capital letter y with acute */,
+        {0x00de, 0xae} /* capital letter thorn (icelandic) */,
+        {0x00df, 0x59} /* small letter sharp s (german) */,
+        {0x00e0, 0x44} /* small letter a with grave */,
+        {0x00e1, 0x45} /* small letter a with acute */,
+        {0x00e2, 0x42} /* small letter a with circumflex */,
+        {0x00e3, 0x46} /* small letter a with tilde */,
+        {0x00e4, 0x43} /* small letter a with diaeresis */,
+        {0x00e5, 0x47} /* small letter a with ring above */,
+        {0x00e6, 0x9c} /* small letter ae */,
+        {0x00e7, 0x48} /* small letter c with cedilla */,
+        {0x00e8, 0x54} /* small letter e with grave */,
+        {0x00e9, 0x51} /* small letter e with acute */,
+        {0x00ea, 0x52} /* small letter e with circumflex */,
+        {0x00eb, 0x53} /* small letter e with diaeresis */,
+        {0x00ec, 0x58} /* small letter i with grave */,
+        {0x00ed, 0x55} /* small letter i with acute */,
+        {0x00ee, 0x56} /* small letter i with circumflex */,
+        {0x00ef, 0x57} /* small letter i with diaeresis */,
+        {0x00f0, 0x8c} /* small letter eth (icelandic) */,
+        {0x00f1, 0x49} /* small letter n with tilde */,
+        {0x00f2, 0xcd} /* small letter o with grave */,
+        {0x00f3, 0xce} /* small letter o with acute */,
+        {0x00f4, 0xcb} /* small letter o with circumflex */,
+        {0x00f5, 0xcf} /* small letter o with tilde */,
+        {0x00f6, 0xcc} /* small letter o with diaeresis */,
+        {0x00f7, 0xe1} /* sign */,
+        {0x00f8, 0x70} /* small letter o with stroke */,
+        {0x00f9, 0xdd} /* small letter u with grave */,
+        {0x00fa, 0xde} /* small letter u with acute */,
+        {0x00fb, 0xdb} /* small letter u with circumflex */,
+        {0x00fc, 0xdc} /* small letter u with diaeresis */,
+        {0x00fd, 0x8d} /* small letter y with acute */,
+        {0x00fe, 0x8e} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xdf} /* small letter y with diaeresis */
+};
+
+/*
+#define cet_ucs4_to_ibm1047_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm1047_extra[cet_ucs4_to_ibm1047_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm1047 =      /* defined in cet.h */
+{      
+       cet_cs_name_ibm1047,            /* name of character set        */
+       cet_cs_alias_ibm1047,           /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm1047,           /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm1047,           /* first non standard character */
+       cet_ucs4_cnt_ibm1047,           /* number of values in table    */
+
+       cet_ucs4_to_ibm1047_links,      /* UCS-4 to char links          */
+       cet_ucs4_to_ibm1047_ct,         /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm1047_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 
+       0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 
+       0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 
+       0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 
+       0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 
+       0x00e7, 0x00f1, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 
+       0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 
+       0x00ec, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 
+       0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 
+       0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 
+       0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 
+       0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 
+       0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 
+       0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 
+       0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x005b, 0x00de, 0x00ae, 
+       0x00ac, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 
+       0x00bd, 0x00be, 0x00dd, 0x00a8, 0x00af, 0x005d, 0x00b4, 0x00d7, 
+       0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 
+       0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 
+       0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm256.h b/gpsbabel/cet/ibm256.h
new file mode 100644 (file)
index 0000000..dc7a683
--- /dev/null
@@ -0,0 +1,381 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM256" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm256_h
+#define ibm256_h
+
+#define cet_cs_name_ibm256 "IBM256"
+
+const char *cet_cs_alias_ibm256[] = 
+{
+       "IBM256/CR-LF", "256/CR-LF", "CP256/CR-LF", "EBCDIC-INT1",
+       NULL
+};
+
+#define cet_ucs4_ofs_ibm256 4
+#define cet_ucs4_cnt_ibm256 252
+
+const int cet_ucs4_map_ibm256[cet_ucs4_cnt_ibm256] =
+{
+       0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 
+       0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 
+       0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 
+       0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 
+       0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x005b, 0x002e, 
+       0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 
+       0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x005d, 0x0024, 
+       0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 
+       0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 
+       0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 
+       0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 
+       0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 
+       0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 
+       0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 
+       0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 
+       0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 
+       0x0192, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 
+       0x203e, 0x00a8, 0x00b4, 0x2017, 0x007b, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 
+       0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 
+       0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 
+       0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x2003, 0x0053, 0x0054, 
+       0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 
+       0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 
+       0x00dc, 0x00d9, 0x00da, 0x009f
+};
+
+#define cet_ucs4_to_ibm256_ct 236
+
+const cet_ucs4_link_t cet_ucs4_to_ibm256_links[cet_ucs4_to_ibm256_ct] =
+{
+        {0x0004, 0x37} /* of transmission (eot) */,
+        {0x0005, 0x2d} /* (enq) */,
+        {0x0006, 0x2e} /* (ack) */,
+        {0x0007, 0x2f} /* (bel) */,
+        {0x0008, 0x16} /* (bs) */,
+        {0x0009, 0x05} /* tabulation (ht) */,
+        {0x000a, 0x25} /* feed (lf) */,
+        {0x0014, 0x3c} /* control four (dc4) */,
+        {0x0015, 0x3d} /* acknowledge (nak) */,
+        {0x0016, 0x32} /* idle (syn) */,
+        {0x0017, 0x26} /* of transmission block (etb) */,
+        {0x001a, 0x3f} /* (sub) */,
+        {0x001b, 0x27} /* (esc) */,
+        {0x0020, 0x40} /* space */,
+        {0x0021, 0x4f} /* mark */,
+        {0x0022, 0x7f} /* mark */,
+        {0x0023, 0x7b} /* sign */,
+        {0x0024, 0x5b} /* sign */,
+        {0x0025, 0x6c} /* sign */,
+        {0x0026, 0x50} /* ampersand */,
+        {0x0027, 0x7d} /* apostrophe */,
+        {0x0028, 0x4d} /* parenthesis */,
+        {0x0029, 0x5d} /* parenthesis */,
+        {0x002a, 0x5c} /* asterisk */,
+        {0x002b, 0x4e} /* sign */,
+        {0x002c, 0x6b} /* comma */,
+        {0x002d, 0x60} /* hyphen-minus */,
+        {0x002e, 0x4b} /* stop */,
+        {0x002f, 0x61} /* solidus */,
+        {0x0030, 0xf0} /* zero */,
+        {0x0031, 0xf1} /* one */,
+        {0x0032, 0xf2} /* two */,
+        {0x0033, 0xf3} /* three */,
+        {0x0034, 0xf4} /* four */,
+        {0x0035, 0xf5} /* five */,
+        {0x0036, 0xf6} /* six */,
+        {0x0037, 0xf7} /* seven */,
+        {0x0038, 0xf8} /* eight */,
+        {0x0039, 0xf9} /* nine */,
+        {0x003a, 0x7a} /* colon */,
+        {0x003b, 0x5e} /* semicolon */,
+        {0x003c, 0x4c} /* sign */,
+        {0x003d, 0x7e} /* sign */,
+        {0x003e, 0x6e} /* sign */,
+        {0x003f, 0x6f} /* mark */,
+        {0x0040, 0x7c} /* at */,
+        {0x0041, 0xc1} /* capital letter a */,
+        {0x0042, 0xc2} /* capital letter b */,
+        {0x0043, 0xc3} /* capital letter c */,
+        {0x0044, 0xc4} /* capital letter d */,
+        {0x0045, 0xc5} /* capital letter e */,
+        {0x0046, 0xc6} /* capital letter f */,
+        {0x0047, 0xc7} /* capital letter g */,
+        {0x0048, 0xc8} /* capital letter h */,
+        {0x0049, 0xc9} /* capital letter i */,
+        {0x004a, 0xd1} /* capital letter j */,
+        {0x004b, 0xd2} /* capital letter k */,
+        {0x004c, 0xd3} /* capital letter l */,
+        {0x004d, 0xd4} /* capital letter m */,
+        {0x004e, 0xd5} /* capital letter n */,
+        {0x004f, 0xd6} /* capital letter o */,
+        {0x0050, 0xd7} /* capital letter p */,
+        {0x0051, 0xd8} /* capital letter q */,
+        {0x0052, 0xd9} /* capital letter r */,
+        {0x0053, 0xe2} /* capital letter s */,
+        {0x0054, 0xe3} /* capital letter t */,
+        {0x0055, 0xe4} /* capital letter u */,
+        {0x0056, 0xe5} /* capital letter v */,
+        {0x0057, 0xe6} /* capital letter w */,
+        {0x0058, 0xe7} /* capital letter x */,
+        {0x0059, 0xe8} /* capital letter y */,
+        {0x005a, 0xe9} /* capital letter z */,
+        {0x005b, 0x4a} /* square bracket */,
+        {0x005c, 0xe0} /* solidus */,
+        {0x005d, 0x5a} /* square bracket */,
+        {0x005e, 0x5f} /* accent */,
+        {0x005f, 0x6d} /* line */,
+        {0x0060, 0x79} /* accent */,
+        {0x0061, 0x81} /* small letter a */,
+        {0x0062, 0x82} /* small letter b */,
+        {0x0063, 0x83} /* small letter c */,
+        {0x0064, 0x84} /* small letter d */,
+        {0x0065, 0x85} /* small letter e */,
+        {0x0066, 0x86} /* small letter f */,
+        {0x0067, 0x87} /* small letter g */,
+        {0x0068, 0x88} /* small letter h */,
+        {0x0069, 0x89} /* small letter i */,
+        {0x006a, 0x91} /* small letter j */,
+        {0x006b, 0x92} /* small letter k */,
+        {0x006c, 0x93} /* small letter l */,
+        {0x006d, 0x94} /* small letter m */,
+        {0x006e, 0x95} /* small letter n */,
+        {0x006f, 0x96} /* small letter o */,
+        {0x0070, 0x97} /* small letter p */,
+        {0x0071, 0x98} /* small letter q */,
+        {0x0072, 0x99} /* small letter r */,
+        {0x0073, 0xa2} /* small letter s */,
+        {0x0074, 0xa3} /* small letter t */,
+        {0x0075, 0xa4} /* small letter u */,
+        {0x0076, 0xa5} /* small letter v */,
+        {0x0077, 0xa6} /* small letter w */,
+        {0x0078, 0xa7} /* small letter x */,
+        {0x0079, 0xa8} /* small letter y */,
+        {0x007a, 0xa9} /* small letter z */,
+        {0x007b, 0xc0} /* curly bracket */,
+        {0x007c, 0xbb} /* line */,
+        {0x007d, 0xd0} /* curly bracket */,
+        {0x007e, 0xa1} /* tilde */,
+        {0x007f, 0x07} /* (del) */,
+        {0x0080, 0x20} /* character (pad) */,
+        {0x0081, 0x21} /* octet preset (hop) */,
+        {0x0082, 0x22} /* permitted here (bph) */,
+        {0x0083, 0x23} /* break here (nbh) */,
+        {0x0084, 0x24} /* (ind) */,
+        {0x0085, 0x15} /* line (nel) */,
+        {0x0086, 0x06} /* of selected area (ssa) */,
+        {0x0087, 0x17} /* of selected area (esa) */,
+        {0x0088, 0x28} /* tabulation set (hts) */,
+        {0x0089, 0x29} /* tabulation with justification (htj) */,
+        {0x008a, 0x2a} /* tabulation set (vts) */,
+        {0x008b, 0x2b} /* line forward (pld) */,
+        {0x008c, 0x2c} /* line backward (plu) */,
+        {0x008d, 0x09} /* line feed (ri) */,
+        {0x008e, 0x0a} /* two (ss2) */,
+        {0x008f, 0x1b} /* three (ss3) */,
+        {0x0090, 0x30} /* control string (dcs) */,
+        {0x0091, 0x31} /* use one (pu1) */,
+        {0x0092, 0x1a} /* use two (pu2) */,
+        {0x0093, 0x33} /* transmit state (sts) */,
+        {0x0094, 0x34} /* character (cch) */,
+        {0x0095, 0x35} /* waiting (mw) */,
+        {0x0096, 0x36} /* of guarded area (spa) */,
+        {0x0097, 0x08} /* of guarded area (epa) */,
+        {0x0098, 0x38} /* of string (sos) */,
+        {0x0099, 0x39} /* graphic character introducer (sgci) */,
+        {0x009a, 0x3a} /* character introducer (sci) */,
+        {0x009b, 0x3b} /* sequence introducer (csi) */,
+        {0x009c, 0x04} /* terminator (st) */,
+        {0x009d, 0x14} /* system command (osc) */,
+        {0x009e, 0x3e} /* message (pm) */,
+        {0x009f, 0xff} /* program command (apc) */,
+        {0x00a0, 0x41} /* space */,
+        {0x00a1, 0xaa} /* exclamation mark */,
+        {0x00a2, 0xb0} /* sign */,
+        {0x00a3, 0xb1} /* sign */,
+        {0x00a4, 0x9f} /* sign */,
+        {0x00a5, 0xb2} /* sign */,
+        {0x00a6, 0x6a} /* bar */,
+        {0x00a7, 0xb5} /* sign */,
+        {0x00a8, 0xbd} /* diaeresis */,
+        {0x00aa, 0x9a} /* ordinal indicator */,
+        {0x00ab, 0x8a} /* double angle quotation mark */,
+        {0x00ac, 0xba} /* sign */,
+        {0x00ad, 0xca} /* hyphen */,
+        {0x00ae, 0xaf} /* sign */,
+        {0x00b0, 0x90} /* sign */,
+        {0x00b1, 0x8f} /* sign */,
+        {0x00b2, 0xea} /* two */,
+        {0x00b3, 0xfa} /* three */,
+        {0x00b4, 0xbe} /* accent */,
+        {0x00b5, 0xa0} /* sign */,
+        {0x00b8, 0x9d} /* cedilla */,
+        {0x00b9, 0xda} /* one */,
+        {0x00ba, 0x9b} /* ordinal indicator */,
+        {0x00bb, 0x8b} /* double angle quotation mark */,
+        {0x00bc, 0xb7} /* fraction one quarter */,
+        {0x00bd, 0xb8} /* fraction one half */,
+        {0x00be, 0xb9} /* fraction three quarters */,
+        {0x00bf, 0xab} /* question mark */,
+        {0x00c0, 0x64} /* capital letter a with grave */,
+        {0x00c1, 0x65} /* capital letter a with acute */,
+        {0x00c2, 0x62} /* capital letter a with circumflex */,
+        {0x00c3, 0x66} /* capital letter a with tilde */,
+        {0x00c4, 0x63} /* capital letter a with diaeresis */,
+        {0x00c5, 0x67} /* capital letter a with ring above */,
+        {0x00c6, 0x9e} /* capital letter ae */,
+        {0x00c7, 0x68} /* capital letter c with cedilla */,
+        {0x00c8, 0x74} /* capital letter e with grave */,
+        {0x00c9, 0x71} /* capital letter e with acute */,
+        {0x00ca, 0x72} /* capital letter e with circumflex */,
+        {0x00cb, 0x73} /* capital letter e with diaeresis */,
+        {0x00cc, 0x78} /* capital letter i with grave */,
+        {0x00cd, 0x75} /* capital letter i with acute */,
+        {0x00ce, 0x76} /* capital letter i with circumflex */,
+        {0x00cf, 0x77} /* capital letter i with diaeresis */,
+        {0x00d0, 0xac} /* capital letter eth (icelandic) */,
+        {0x00d1, 0x69} /* capital letter n with tilde */,
+        {0x00d2, 0xed} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xeb} /* capital letter o with circumflex */,
+        {0x00d5, 0xef} /* capital letter o with tilde */,
+        {0x00d6, 0xec} /* capital letter o with diaeresis */,
+        {0x00d8, 0x80} /* capital letter o with stroke */,
+        {0x00d9, 0xfd} /* capital letter u with grave */,
+        {0x00da, 0xfe} /* capital letter u with acute */,
+        {0x00db, 0xfb} /* capital letter u with circumflex */,
+        {0x00dc, 0xfc} /* capital letter u with diaeresis */,
+        {0x00dd, 0xad} /* capital letter y with acute */,
+        {0x00de, 0xae} /* capital letter thorn (icelandic) */,
+        {0x00df, 0x59} /* small letter sharp s (german) */,
+        {0x00e0, 0x44} /* small letter a with grave */,
+        {0x00e1, 0x45} /* small letter a with acute */,
+        {0x00e2, 0x42} /* small letter a with circumflex */,
+        {0x00e3, 0x46} /* small letter a with tilde */,
+        {0x00e4, 0x43} /* small letter a with diaeresis */,
+        {0x00e5, 0x47} /* small letter a with ring above */,
+        {0x00e6, 0x9c} /* small letter ae */,
+        {0x00e7, 0x48} /* small letter c with cedilla */,
+        {0x00e8, 0x54} /* small letter e with grave */,
+        {0x00e9, 0x51} /* small letter e with acute */,
+        {0x00ea, 0x52} /* small letter e with circumflex */,
+        {0x00eb, 0x53} /* small letter e with diaeresis */,
+        {0x00ec, 0x58} /* small letter i with grave */,
+        {0x00ed, 0x55} /* small letter i with acute */,
+        {0x00ee, 0x56} /* small letter i with circumflex */,
+        {0x00ef, 0x57} /* small letter i with diaeresis */,
+        {0x00f0, 0x8c} /* small letter eth (icelandic) */,
+        {0x00f1, 0x49} /* small letter n with tilde */,
+        {0x00f2, 0xcd} /* small letter o with grave */,
+        {0x00f3, 0xce} /* small letter o with acute */,
+        {0x00f4, 0xcb} /* small letter o with circumflex */,
+        {0x00f5, 0xcf} /* small letter o with tilde */,
+        {0x00f6, 0xcc} /* small letter o with diaeresis */,
+        {0x00f8, 0x70} /* small letter o with stroke */,
+        {0x00f9, 0xdd} /* small letter u with grave */,
+        {0x00fa, 0xde} /* small letter u with acute */,
+        {0x00fb, 0xdb} /* small letter u with circumflex */,
+        {0x00fc, 0xdc} /* small letter u with diaeresis */,
+        {0x00fd, 0x8d} /* small letter y with acute */,
+        {0x00fe, 0x8e} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xdf} /* small letter y with diaeresis */,
+        {0x0192, 0xb4} /* minuscule latine f hameçon */,
+        {0x2003, 0xe1} /* space */,
+        {0x2017, 0xbf} /* low line */,
+        {0x203e, 0xbc} /* overline */,
+        {0x20a7, 0xb3} /* sign */
+};
+
+/*
+#define cet_ucs4_to_ibm256_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm256_extra[cet_ucs4_to_ibm256_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm256 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm256,             /* name of character set        */
+       cet_cs_alias_ibm256,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm256,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm256,            /* first non standard character */
+       cet_ucs4_cnt_ibm256,            /* number of values in table    */
+
+       cet_ucs4_to_ibm256_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm256_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm256_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 
+       0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 
+       0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 
+       0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 
+       0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 
+       0x00e7, 0x00f1, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 
+       0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 
+       0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 
+       0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 
+       0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 
+       0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 
+       0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 
+       0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 
+       0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 
+       0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 
+       0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, 0x00a7, 0x00b6, 0x00bc, 
+       0x00bd, 0x00be, 0x00ac, 0x007c, 0x203e, 0x00a8, 0x00b4, 0x2017, 
+       0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 
+       0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 
+       0x005c, 0x2003, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm273.h b/gpsbabel/cet/ibm273.h
new file mode 100644 (file)
index 0000000..83794b1
--- /dev/null
@@ -0,0 +1,380 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM273" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm273_h
+#define ibm273_h
+
+#define cet_cs_name_ibm273 "IBM273"
+
+const char *cet_cs_alias_ibm273[] = 
+{
+       "IBM273/CR-LF", "273/CR-LF", "CP273/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm273 4
+#define cet_ucs4_cnt_ibm273 252
+
+const int cet_ucs4_map_ibm273[cet_ucs4_cnt_ibm273] =
+{
+       0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 
+       0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 
+       0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 
+       0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x007b, 
+       0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00c4, 0x002e, 
+       0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 
+       0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x007e, 0x00dc, 0x0024, 
+       0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x005b, 
+       0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00f6, 0x002c, 
+       0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 
+       0x00a7, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 
+       0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 
+       0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 
+       0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x00df, 0x0073, 0x0074, 
+       0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 
+       0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 
+       0x00a9, 0x0040, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 
+       0x203e, 0x00a8, 0x00b4, 0x00d7, 0x00e4, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 
+       0x00a6, 0x00f2, 0x00f3, 0x00f5, 0x00fc, 0x004a, 0x004b, 0x004c, 
+       0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 
+       0x007d, 0x00f9, 0x00fa, 0x00ff, 0x00d6, 0x00f7, 0x0053, 0x0054, 
+       0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 
+       0x005c, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 
+       0x005d, 0x00d9, 0x00da, 0x009f
+};
+
+#define cet_ucs4_to_ibm273_ct 236
+
+const cet_ucs4_link_t cet_ucs4_to_ibm273_links[cet_ucs4_to_ibm273_ct] =
+{
+        {0x0004, 0x37} /* of transmission (eot) */,
+        {0x0005, 0x2d} /* (enq) */,
+        {0x0006, 0x2e} /* (ack) */,
+        {0x0007, 0x2f} /* (bel) */,
+        {0x0008, 0x16} /* (bs) */,
+        {0x0009, 0x05} /* tabulation (ht) */,
+        {0x000a, 0x25} /* feed (lf) */,
+        {0x0014, 0x3c} /* control four (dc4) */,
+        {0x0015, 0x3d} /* acknowledge (nak) */,
+        {0x0016, 0x32} /* idle (syn) */,
+        {0x0017, 0x26} /* of transmission block (etb) */,
+        {0x001a, 0x3f} /* (sub) */,
+        {0x001b, 0x27} /* (esc) */,
+        {0x0020, 0x40} /* space */,
+        {0x0021, 0x4f} /* mark */,
+        {0x0022, 0x7f} /* mark */,
+        {0x0023, 0x7b} /* sign */,
+        {0x0024, 0x5b} /* sign */,
+        {0x0025, 0x6c} /* sign */,
+        {0x0026, 0x50} /* ampersand */,
+        {0x0027, 0x7d} /* apostrophe */,
+        {0x0028, 0x4d} /* parenthesis */,
+        {0x0029, 0x5d} /* parenthesis */,
+        {0x002a, 0x5c} /* asterisk */,
+        {0x002b, 0x4e} /* sign */,
+        {0x002c, 0x6b} /* comma */,
+        {0x002d, 0x60} /* hyphen-minus */,
+        {0x002e, 0x4b} /* stop */,
+        {0x002f, 0x61} /* solidus */,
+        {0x0030, 0xf0} /* zero */,
+        {0x0031, 0xf1} /* one */,
+        {0x0032, 0xf2} /* two */,
+        {0x0033, 0xf3} /* three */,
+        {0x0034, 0xf4} /* four */,
+        {0x0035, 0xf5} /* five */,
+        {0x0036, 0xf6} /* six */,
+        {0x0037, 0xf7} /* seven */,
+        {0x0038, 0xf8} /* eight */,
+        {0x0039, 0xf9} /* nine */,
+        {0x003a, 0x7a} /* colon */,
+        {0x003b, 0x5e} /* semicolon */,
+        {0x003c, 0x4c} /* sign */,
+        {0x003d, 0x7e} /* sign */,
+        {0x003e, 0x6e} /* sign */,
+        {0x003f, 0x6f} /* mark */,
+        {0x0040, 0xb5} /* at */,
+        {0x0041, 0xc1} /* capital letter a */,
+        {0x0042, 0xc2} /* capital letter b */,
+        {0x0043, 0xc3} /* capital letter c */,
+        {0x0044, 0xc4} /* capital letter d */,
+        {0x0045, 0xc5} /* capital letter e */,
+        {0x0046, 0xc6} /* capital letter f */,
+        {0x0047, 0xc7} /* capital letter g */,
+        {0x0048, 0xc8} /* capital letter h */,
+        {0x0049, 0xc9} /* capital letter i */,
+        {0x004a, 0xd1} /* capital letter j */,
+        {0x004b, 0xd2} /* capital letter k */,
+        {0x004c, 0xd3} /* capital letter l */,
+        {0x004d, 0xd4} /* capital letter m */,
+        {0x004e, 0xd5} /* capital letter n */,
+        {0x004f, 0xd6} /* capital letter o */,
+        {0x0050, 0xd7} /* capital letter p */,
+        {0x0051, 0xd8} /* capital letter q */,
+        {0x0052, 0xd9} /* capital letter r */,
+        {0x0053, 0xe2} /* capital letter s */,
+        {0x0054, 0xe3} /* capital letter t */,
+        {0x0055, 0xe4} /* capital letter u */,
+        {0x0056, 0xe5} /* capital letter v */,
+        {0x0057, 0xe6} /* capital letter w */,
+        {0x0058, 0xe7} /* capital letter x */,
+        {0x0059, 0xe8} /* capital letter y */,
+        {0x005a, 0xe9} /* capital letter z */,
+        {0x005b, 0x63} /* square bracket */,
+        {0x005c, 0xec} /* solidus */,
+        {0x005d, 0xfc} /* square bracket */,
+        {0x005e, 0x5f} /* accent */,
+        {0x005f, 0x6d} /* line */,
+        {0x0060, 0x79} /* accent */,
+        {0x0061, 0x81} /* small letter a */,
+        {0x0062, 0x82} /* small letter b */,
+        {0x0063, 0x83} /* small letter c */,
+        {0x0064, 0x84} /* small letter d */,
+        {0x0065, 0x85} /* small letter e */,
+        {0x0066, 0x86} /* small letter f */,
+        {0x0067, 0x87} /* small letter g */,
+        {0x0068, 0x88} /* small letter h */,
+        {0x0069, 0x89} /* small letter i */,
+        {0x006a, 0x91} /* small letter j */,
+        {0x006b, 0x92} /* small letter k */,
+        {0x006c, 0x93} /* small letter l */,
+        {0x006d, 0x94} /* small letter m */,
+        {0x006e, 0x95} /* small letter n */,
+        {0x006f, 0x96} /* small letter o */,
+        {0x0070, 0x97} /* small letter p */,
+        {0x0071, 0x98} /* small letter q */,
+        {0x0072, 0x99} /* small letter r */,
+        {0x0073, 0xa2} /* small letter s */,
+        {0x0074, 0xa3} /* small letter t */,
+        {0x0075, 0xa4} /* small letter u */,
+        {0x0076, 0xa5} /* small letter v */,
+        {0x0077, 0xa6} /* small letter w */,
+        {0x0078, 0xa7} /* small letter x */,
+        {0x0079, 0xa8} /* small letter y */,
+        {0x007a, 0xa9} /* small letter z */,
+        {0x007b, 0x43} /* curly bracket */,
+        {0x007c, 0xbb} /* line */,
+        {0x007d, 0xdc} /* curly bracket */,
+        {0x007e, 0x59} /* tilde */,
+        {0x007f, 0x07} /* (del) */,
+        {0x0080, 0x20} /* character (pad) */,
+        {0x0081, 0x21} /* octet preset (hop) */,
+        {0x0082, 0x22} /* permitted here (bph) */,
+        {0x0083, 0x23} /* break here (nbh) */,
+        {0x0084, 0x24} /* (ind) */,
+        {0x0085, 0x15} /* line (nel) */,
+        {0x0086, 0x06} /* of selected area (ssa) */,
+        {0x0087, 0x17} /* of selected area (esa) */,
+        {0x0088, 0x28} /* tabulation set (hts) */,
+        {0x0089, 0x29} /* tabulation with justification (htj) */,
+        {0x008a, 0x2a} /* tabulation set (vts) */,
+        {0x008b, 0x2b} /* line forward (pld) */,
+        {0x008c, 0x2c} /* line backward (plu) */,
+        {0x008d, 0x09} /* line feed (ri) */,
+        {0x008e, 0x0a} /* two (ss2) */,
+        {0x008f, 0x1b} /* three (ss3) */,
+        {0x0090, 0x30} /* control string (dcs) */,
+        {0x0091, 0x31} /* use one (pu1) */,
+        {0x0092, 0x1a} /* use two (pu2) */,
+        {0x0093, 0x33} /* transmit state (sts) */,
+        {0x0094, 0x34} /* character (cch) */,
+        {0x0095, 0x35} /* waiting (mw) */,
+        {0x0096, 0x36} /* of guarded area (spa) */,
+        {0x0097, 0x08} /* of guarded area (epa) */,
+        {0x0098, 0x38} /* of string (sos) */,
+        {0x0099, 0x39} /* graphic character introducer (sgci) */,
+        {0x009a, 0x3a} /* character introducer (sci) */,
+        {0x009b, 0x3b} /* sequence introducer (csi) */,
+        {0x009c, 0x04} /* terminator (st) */,
+        {0x009d, 0x14} /* system command (osc) */,
+        {0x009e, 0x3e} /* message (pm) */,
+        {0x009f, 0xff} /* program command (apc) */,
+        {0x00a0, 0x41} /* space */,
+        {0x00a1, 0xaa} /* exclamation mark */,
+        {0x00a2, 0xb0} /* sign */,
+        {0x00a3, 0xb1} /* sign */,
+        {0x00a4, 0x9f} /* sign */,
+        {0x00a5, 0xb2} /* sign */,
+        {0x00a6, 0xcc} /* bar */,
+        {0x00a7, 0x7c} /* sign */,
+        {0x00a8, 0xbd} /* diaeresis */,
+        {0x00a9, 0xb4} /* sign */,
+        {0x00aa, 0x9a} /* ordinal indicator */,
+        {0x00ab, 0x8a} /* double angle quotation mark */,
+        {0x00ac, 0xba} /* sign */,
+        {0x00ad, 0xca} /* hyphen */,
+        {0x00ae, 0xaf} /* sign */,
+        {0x00b0, 0x90} /* sign */,
+        {0x00b1, 0x8f} /* sign */,
+        {0x00b2, 0xea} /* two */,
+        {0x00b3, 0xfa} /* three */,
+        {0x00b4, 0xbe} /* accent */,
+        {0x00b5, 0xa0} /* sign */,
+        {0x00b7, 0xb3} /* dot */,
+        {0x00b8, 0x9d} /* cedilla */,
+        {0x00b9, 0xda} /* one */,
+        {0x00ba, 0x9b} /* ordinal indicator */,
+        {0x00bb, 0x8b} /* double angle quotation mark */,
+        {0x00bc, 0xb7} /* fraction one quarter */,
+        {0x00bd, 0xb8} /* fraction one half */,
+        {0x00be, 0xb9} /* fraction three quarters */,
+        {0x00bf, 0xab} /* question mark */,
+        {0x00c0, 0x64} /* capital letter a with grave */,
+        {0x00c1, 0x65} /* capital letter a with acute */,
+        {0x00c2, 0x62} /* capital letter a with circumflex */,
+        {0x00c3, 0x66} /* capital letter a with tilde */,
+        {0x00c4, 0x4a} /* capital letter a with diaeresis */,
+        {0x00c5, 0x67} /* capital letter a with ring above */,
+        {0x00c6, 0x9e} /* capital letter ae */,
+        {0x00c7, 0x68} /* capital letter c with cedilla */,
+        {0x00c8, 0x74} /* capital letter e with grave */,
+        {0x00c9, 0x71} /* capital letter e with acute */,
+        {0x00ca, 0x72} /* capital letter e with circumflex */,
+        {0x00cb, 0x73} /* capital letter e with diaeresis */,
+        {0x00cc, 0x78} /* capital letter i with grave */,
+        {0x00cd, 0x75} /* capital letter i with acute */,
+        {0x00ce, 0x76} /* capital letter i with circumflex */,
+        {0x00cf, 0x77} /* capital letter i with diaeresis */,
+        {0x00d0, 0xac} /* capital letter eth (icelandic) */,
+        {0x00d1, 0x69} /* capital letter n with tilde */,
+        {0x00d2, 0xed} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xeb} /* capital letter o with circumflex */,
+        {0x00d5, 0xef} /* capital letter o with tilde */,
+        {0x00d6, 0xe0} /* capital letter o with diaeresis */,
+        {0x00d7, 0xbf} /* sign */,
+        {0x00d8, 0x80} /* capital letter o with stroke */,
+        {0x00d9, 0xfd} /* capital letter u with grave */,
+        {0x00da, 0xfe} /* capital letter u with acute */,
+        {0x00db, 0xfb} /* capital letter u with circumflex */,
+        {0x00dc, 0x5a} /* capital letter u with diaeresis */,
+        {0x00dd, 0xad} /* capital letter y with acute */,
+        {0x00de, 0xae} /* capital letter thorn (icelandic) */,
+        {0x00df, 0xa1} /* small letter sharp s (german) */,
+        {0x00e0, 0x44} /* small letter a with grave */,
+        {0x00e1, 0x45} /* small letter a with acute */,
+        {0x00e2, 0x42} /* small letter a with circumflex */,
+        {0x00e3, 0x46} /* small letter a with tilde */,
+        {0x00e4, 0xc0} /* small letter a with diaeresis */,
+        {0x00e5, 0x47} /* small letter a with ring above */,
+        {0x00e6, 0x9c} /* small letter ae */,
+        {0x00e7, 0x48} /* small letter c with cedilla */,
+        {0x00e8, 0x54} /* small letter e with grave */,
+        {0x00e9, 0x51} /* small letter e with acute */,
+        {0x00ea, 0x52} /* small letter e with circumflex */,
+        {0x00eb, 0x53} /* small letter e with diaeresis */,
+        {0x00ec, 0x58} /* small letter i with grave */,
+        {0x00ed, 0x55} /* small letter i with acute */,
+        {0x00ee, 0x56} /* small letter i with circumflex */,
+        {0x00ef, 0x57} /* small letter i with diaeresis */,
+        {0x00f0, 0x8c} /* small letter eth (icelandic) */,
+        {0x00f1, 0x49} /* small letter n with tilde */,
+        {0x00f2, 0xcd} /* small letter o with grave */,
+        {0x00f3, 0xce} /* small letter o with acute */,
+        {0x00f4, 0xcb} /* small letter o with circumflex */,
+        {0x00f5, 0xcf} /* small letter o with tilde */,
+        {0x00f6, 0x6a} /* small letter o with diaeresis */,
+        {0x00f7, 0xe1} /* sign */,
+        {0x00f8, 0x70} /* small letter o with stroke */,
+        {0x00f9, 0xdd} /* small letter u with grave */,
+        {0x00fa, 0xde} /* small letter u with acute */,
+        {0x00fb, 0xdb} /* small letter u with circumflex */,
+        {0x00fc, 0xd0} /* small letter u with diaeresis */,
+        {0x00fd, 0x8d} /* small letter y with acute */,
+        {0x00fe, 0x8e} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xdf} /* small letter y with diaeresis */,
+        {0x203e, 0xbc} /* overline */
+};
+
+/*
+#define cet_ucs4_to_ibm273_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm273_extra[cet_ucs4_to_ibm273_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm273 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm273,             /* name of character set        */
+       cet_cs_alias_ibm273,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm273,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm273,            /* first non standard character */
+       cet_ucs4_cnt_ibm273,            /* number of values in table    */
+
+       cet_ucs4_to_ibm273_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm273_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm273_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 
+       0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 
+       0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 
+       0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 
+       0x0020, 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 
+       0x00e7, 0x00f1, 0x00c4, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 
+       0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 
+       0x00ec, 0x007e, 0x00dc, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 
+       0x002d, 0x002f, 0x00c2, 0x005b, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 
+       0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 
+       0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 
+       0x00cc, 0x0060, 0x003a, 0x0023, 0x00a7, 0x0027, 0x003d, 0x0022, 
+       0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 
+       0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 
+       0x00b5, 0x00df, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 
+       0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x0040, 0x00b6, 0x00bc, 
+       0x00bd, 0x00be, 0x00ac, 0x007c, 0x203e, 0x00a8, 0x00b4, 0x00d7, 
+       0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5, 
+       0x00fc, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x00b9, 0x00fb, 0x007d, 0x00f9, 0x00fa, 0x00ff, 
+       0x00d6, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x00b2, 0x00d4, 0x005c, 0x00d2, 0x00d3, 0x00d5, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x00b3, 0x00db, 0x005d, 0x00d9, 0x00da, 0x009f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm277.h b/gpsbabel/cet/ibm277.h
new file mode 100644 (file)
index 0000000..cd6f21d
--- /dev/null
@@ -0,0 +1,380 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM277" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm277_h
+#define ibm277_h
+
+#define cet_cs_name_ibm277 "IBM277"
+
+const char *cet_cs_alias_ibm277[] = 
+{
+       "IBM277/CR-LF", "EBCDIC-CP-DK", "EBCDIC-CP-NO", NULL
+};
+
+#define cet_ucs4_ofs_ibm277 4
+#define cet_ucs4_cnt_ibm277 252
+
+const int cet_ucs4_map_ibm277[cet_ucs4_cnt_ibm277] =
+{
+       0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 
+       0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 
+       0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 
+       0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 
+       0x00e0, 0x00e1, 0x00e3, 0x007d, 0x00e7, 0x00f1, 0x0023, 0x002e, 
+       0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 
+       0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00a4, 0x00c5, 
+       0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 
+       0x00c0, 0x00c1, 0x00c3, 0x0024, 0x00c7, 0x00d1, 0x00f8, 0x002c, 
+       0x0025, 0x005f, 0x003e, 0x003f, 0x00a6, 0x00c9, 0x00ca, 0x00cb, 
+       0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x00c6, 
+       0x00d8, 0x0027, 0x003d, 0x0022, 0x0040, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 
+       0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 
+       0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 
+       0x007b, 0x00b8, 0x005b, 0x005d, 0x00b5, 0x00fc, 0x0073, 0x0074, 
+       0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 
+       0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 
+       0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 
+       0x203e, 0x00a8, 0x00b4, 0x00d7, 0x00e6, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 
+       0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x00e5, 0x004a, 0x004b, 0x004c, 
+       0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 
+       0x007e, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 
+       0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 
+       0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 
+       0x00dc, 0x00d9, 0x00da, 0x009f
+};
+
+#define cet_ucs4_to_ibm277_ct 236
+
+const cet_ucs4_link_t cet_ucs4_to_ibm277_links[cet_ucs4_to_ibm277_ct] =
+{
+        {0x0004, 0x37} /* of transmission (eot) */,
+        {0x0005, 0x2d} /* (enq) */,
+        {0x0006, 0x2e} /* (ack) */,
+        {0x0007, 0x2f} /* (bel) */,
+        {0x0008, 0x16} /* (bs) */,
+        {0x0009, 0x05} /* tabulation (ht) */,
+        {0x000a, 0x25} /* feed (lf) */,
+        {0x0014, 0x3c} /* control four (dc4) */,
+        {0x0015, 0x3d} /* acknowledge (nak) */,
+        {0x0016, 0x32} /* idle (syn) */,
+        {0x0017, 0x26} /* of transmission block (etb) */,
+        {0x001a, 0x3f} /* (sub) */,
+        {0x001b, 0x27} /* (esc) */,
+        {0x0020, 0x40} /* space */,
+        {0x0021, 0x4f} /* mark */,
+        {0x0022, 0x7f} /* mark */,
+        {0x0023, 0x4a} /* sign */,
+        {0x0024, 0x67} /* sign */,
+        {0x0025, 0x6c} /* sign */,
+        {0x0026, 0x50} /* ampersand */,
+        {0x0027, 0x7d} /* apostrophe */,
+        {0x0028, 0x4d} /* parenthesis */,
+        {0x0029, 0x5d} /* parenthesis */,
+        {0x002a, 0x5c} /* asterisk */,
+        {0x002b, 0x4e} /* sign */,
+        {0x002c, 0x6b} /* comma */,
+        {0x002d, 0x60} /* hyphen-minus */,
+        {0x002e, 0x4b} /* stop */,
+        {0x002f, 0x61} /* solidus */,
+        {0x0030, 0xf0} /* zero */,
+        {0x0031, 0xf1} /* one */,
+        {0x0032, 0xf2} /* two */,
+        {0x0033, 0xf3} /* three */,
+        {0x0034, 0xf4} /* four */,
+        {0x0035, 0xf5} /* five */,
+        {0x0036, 0xf6} /* six */,
+        {0x0037, 0xf7} /* seven */,
+        {0x0038, 0xf8} /* eight */,
+        {0x0039, 0xf9} /* nine */,
+        {0x003a, 0x7a} /* colon */,
+        {0x003b, 0x5e} /* semicolon */,
+        {0x003c, 0x4c} /* sign */,
+        {0x003d, 0x7e} /* sign */,
+        {0x003e, 0x6e} /* sign */,
+        {0x003f, 0x6f} /* mark */,
+        {0x0040, 0x80} /* at */,
+        {0x0041, 0xc1} /* capital letter a */,
+        {0x0042, 0xc2} /* capital letter b */,
+        {0x0043, 0xc3} /* capital letter c */,
+        {0x0044, 0xc4} /* capital letter d */,
+        {0x0045, 0xc5} /* capital letter e */,
+        {0x0046, 0xc6} /* capital letter f */,
+        {0x0047, 0xc7} /* capital letter g */,
+        {0x0048, 0xc8} /* capital letter h */,
+        {0x0049, 0xc9} /* capital letter i */,
+        {0x004a, 0xd1} /* capital letter j */,
+        {0x004b, 0xd2} /* capital letter k */,
+        {0x004c, 0xd3} /* capital letter l */,
+        {0x004d, 0xd4} /* capital letter m */,
+        {0x004e, 0xd5} /* capital letter n */,
+        {0x004f, 0xd6} /* capital letter o */,
+        {0x0050, 0xd7} /* capital letter p */,
+        {0x0051, 0xd8} /* capital letter q */,
+        {0x0052, 0xd9} /* capital letter r */,
+        {0x0053, 0xe2} /* capital letter s */,
+        {0x0054, 0xe3} /* capital letter t */,
+        {0x0055, 0xe4} /* capital letter u */,
+        {0x0056, 0xe5} /* capital letter v */,
+        {0x0057, 0xe6} /* capital letter w */,
+        {0x0058, 0xe7} /* capital letter x */,
+        {0x0059, 0xe8} /* capital letter y */,
+        {0x005a, 0xe9} /* capital letter z */,
+        {0x005b, 0x9e} /* square bracket */,
+        {0x005c, 0xe0} /* solidus */,
+        {0x005d, 0x9f} /* square bracket */,
+        {0x005e, 0x5f} /* accent */,
+        {0x005f, 0x6d} /* line */,
+        {0x0060, 0x79} /* accent */,
+        {0x0061, 0x81} /* small letter a */,
+        {0x0062, 0x82} /* small letter b */,
+        {0x0063, 0x83} /* small letter c */,
+        {0x0064, 0x84} /* small letter d */,
+        {0x0065, 0x85} /* small letter e */,
+        {0x0066, 0x86} /* small letter f */,
+        {0x0067, 0x87} /* small letter g */,
+        {0x0068, 0x88} /* small letter h */,
+        {0x0069, 0x89} /* small letter i */,
+        {0x006a, 0x91} /* small letter j */,
+        {0x006b, 0x92} /* small letter k */,
+        {0x006c, 0x93} /* small letter l */,
+        {0x006d, 0x94} /* small letter m */,
+        {0x006e, 0x95} /* small letter n */,
+        {0x006f, 0x96} /* small letter o */,
+        {0x0070, 0x97} /* small letter p */,
+        {0x0071, 0x98} /* small letter q */,
+        {0x0072, 0x99} /* small letter r */,
+        {0x0073, 0xa2} /* small letter s */,
+        {0x0074, 0xa3} /* small letter t */,
+        {0x0075, 0xa4} /* small letter u */,
+        {0x0076, 0xa5} /* small letter v */,
+        {0x0077, 0xa6} /* small letter w */,
+        {0x0078, 0xa7} /* small letter x */,
+        {0x0079, 0xa8} /* small letter y */,
+        {0x007a, 0xa9} /* small letter z */,
+        {0x007b, 0x9c} /* curly bracket */,
+        {0x007c, 0xbb} /* line */,
+        {0x007d, 0x47} /* curly bracket */,
+        {0x007e, 0xdc} /* tilde */,
+        {0x007f, 0x07} /* (del) */,
+        {0x0080, 0x20} /* character (pad) */,
+        {0x0081, 0x21} /* octet preset (hop) */,
+        {0x0082, 0x22} /* permitted here (bph) */,
+        {0x0083, 0x23} /* break here (nbh) */,
+        {0x0084, 0x24} /* (ind) */,
+        {0x0085, 0x15} /* line (nel) */,
+        {0x0086, 0x06} /* of selected area (ssa) */,
+        {0x0087, 0x17} /* of selected area (esa) */,
+        {0x0088, 0x28} /* tabulation set (hts) */,
+        {0x0089, 0x29} /* tabulation with justification (htj) */,
+        {0x008a, 0x2a} /* tabulation set (vts) */,
+        {0x008b, 0x2b} /* line forward (pld) */,
+        {0x008c, 0x2c} /* line backward (plu) */,
+        {0x008d, 0x09} /* line feed (ri) */,
+        {0x008e, 0x0a} /* two (ss2) */,
+        {0x008f, 0x1b} /* three (ss3) */,
+        {0x0090, 0x30} /* control string (dcs) */,
+        {0x0091, 0x31} /* use one (pu1) */,
+        {0x0092, 0x1a} /* use two (pu2) */,
+        {0x0093, 0x33} /* transmit state (sts) */,
+        {0x0094, 0x34} /* character (cch) */,
+        {0x0095, 0x35} /* waiting (mw) */,
+        {0x0096, 0x36} /* of guarded area (spa) */,
+        {0x0097, 0x08} /* of guarded area (epa) */,
+        {0x0098, 0x38} /* of string (sos) */,
+        {0x0099, 0x39} /* graphic character introducer (sgci) */,
+        {0x009a, 0x3a} /* character introducer (sci) */,
+        {0x009b, 0x3b} /* sequence introducer (csi) */,
+        {0x009c, 0x04} /* terminator (st) */,
+        {0x009d, 0x14} /* system command (osc) */,
+        {0x009e, 0x3e} /* message (pm) */,
+        {0x009f, 0xff} /* program command (apc) */,
+        {0x00a0, 0x41} /* space */,
+        {0x00a1, 0xaa} /* exclamation mark */,
+        {0x00a2, 0xb0} /* sign */,
+        {0x00a3, 0xb1} /* sign */,
+        {0x00a4, 0x5a} /* sign */,
+        {0x00a5, 0xb2} /* sign */,
+        {0x00a6, 0x70} /* bar */,
+        {0x00a7, 0xb5} /* sign */,
+        {0x00a8, 0xbd} /* diaeresis */,
+        {0x00a9, 0xb4} /* sign */,
+        {0x00aa, 0x9a} /* ordinal indicator */,
+        {0x00ab, 0x8a} /* double angle quotation mark */,
+        {0x00ac, 0xba} /* sign */,
+        {0x00ad, 0xca} /* hyphen */,
+        {0x00ae, 0xaf} /* sign */,
+        {0x00b0, 0x90} /* sign */,
+        {0x00b1, 0x8f} /* sign */,
+        {0x00b2, 0xea} /* two */,
+        {0x00b3, 0xfa} /* three */,
+        {0x00b4, 0xbe} /* accent */,
+        {0x00b5, 0xa0} /* sign */,
+        {0x00b7, 0xb3} /* dot */,
+        {0x00b8, 0x9d} /* cedilla */,
+        {0x00b9, 0xda} /* one */,
+        {0x00ba, 0x9b} /* ordinal indicator */,
+        {0x00bb, 0x8b} /* double angle quotation mark */,
+        {0x00bc, 0xb7} /* fraction one quarter */,
+        {0x00bd, 0xb8} /* fraction one half */,
+        {0x00be, 0xb9} /* fraction three quarters */,
+        {0x00bf, 0xab} /* question mark */,
+        {0x00c0, 0x64} /* capital letter a with grave */,
+        {0x00c1, 0x65} /* capital letter a with acute */,
+        {0x00c2, 0x62} /* capital letter a with circumflex */,
+        {0x00c3, 0x66} /* capital letter a with tilde */,
+        {0x00c4, 0x63} /* capital letter a with diaeresis */,
+        {0x00c5, 0x5b} /* capital letter a with ring above */,
+        {0x00c6, 0x7b} /* capital letter ae */,
+        {0x00c7, 0x68} /* capital letter c with cedilla */,
+        {0x00c8, 0x74} /* capital letter e with grave */,
+        {0x00c9, 0x71} /* capital letter e with acute */,
+        {0x00ca, 0x72} /* capital letter e with circumflex */,
+        {0x00cb, 0x73} /* capital letter e with diaeresis */,
+        {0x00cc, 0x78} /* capital letter i with grave */,
+        {0x00cd, 0x75} /* capital letter i with acute */,
+        {0x00ce, 0x76} /* capital letter i with circumflex */,
+        {0x00cf, 0x77} /* capital letter i with diaeresis */,
+        {0x00d0, 0xac} /* capital letter eth (icelandic) */,
+        {0x00d1, 0x69} /* capital letter n with tilde */,
+        {0x00d2, 0xed} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xeb} /* capital letter o with circumflex */,
+        {0x00d5, 0xef} /* capital letter o with tilde */,
+        {0x00d6, 0xec} /* capital letter o with diaeresis */,
+        {0x00d7, 0xbf} /* sign */,
+        {0x00d8, 0x7c} /* capital letter o with stroke */,
+        {0x00d9, 0xfd} /* capital letter u with grave */,
+        {0x00da, 0xfe} /* capital letter u with acute */,
+        {0x00db, 0xfb} /* capital letter u with circumflex */,
+        {0x00dc, 0xfc} /* capital letter u with diaeresis */,
+        {0x00dd, 0xad} /* capital letter y with acute */,
+        {0x00de, 0xae} /* capital letter thorn (icelandic) */,
+        {0x00df, 0x59} /* small letter sharp s (german) */,
+        {0x00e0, 0x44} /* small letter a with grave */,
+        {0x00e1, 0x45} /* small letter a with acute */,
+        {0x00e2, 0x42} /* small letter a with circumflex */,
+        {0x00e3, 0x46} /* small letter a with tilde */,
+        {0x00e4, 0x43} /* small letter a with diaeresis */,
+        {0x00e5, 0xd0} /* small letter a with ring above */,
+        {0x00e6, 0xc0} /* small letter ae */,
+        {0x00e7, 0x48} /* small letter c with cedilla */,
+        {0x00e8, 0x54} /* small letter e with grave */,
+        {0x00e9, 0x51} /* small letter e with acute */,
+        {0x00ea, 0x52} /* small letter e with circumflex */,
+        {0x00eb, 0x53} /* small letter e with diaeresis */,
+        {0x00ec, 0x58} /* small letter i with grave */,
+        {0x00ed, 0x55} /* small letter i with acute */,
+        {0x00ee, 0x56} /* small letter i with circumflex */,
+        {0x00ef, 0x57} /* small letter i with diaeresis */,
+        {0x00f0, 0x8c} /* small letter eth (icelandic) */,
+        {0x00f1, 0x49} /* small letter n with tilde */,
+        {0x00f2, 0xcd} /* small letter o with grave */,
+        {0x00f3, 0xce} /* small letter o with acute */,
+        {0x00f4, 0xcb} /* small letter o with circumflex */,
+        {0x00f5, 0xcf} /* small letter o with tilde */,
+        {0x00f6, 0xcc} /* small letter o with diaeresis */,
+        {0x00f7, 0xe1} /* sign */,
+        {0x00f8, 0x6a} /* small letter o with stroke */,
+        {0x00f9, 0xdd} /* small letter u with grave */,
+        {0x00fa, 0xde} /* small letter u with acute */,
+        {0x00fb, 0xdb} /* small letter u with circumflex */,
+        {0x00fc, 0xa1} /* small letter u with diaeresis */,
+        {0x00fd, 0x8d} /* small letter y with acute */,
+        {0x00fe, 0x8e} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xdf} /* small letter y with diaeresis */,
+        {0x203e, 0xbc} /* overline */
+};
+
+/*
+#define cet_ucs4_to_ibm277_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm277_extra[cet_ucs4_to_ibm277_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm277 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm277,             /* name of character set        */
+       cet_cs_alias_ibm277,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm277,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm277,            /* first non standard character */
+       cet_ucs4_cnt_ibm277,            /* number of values in table    */
+
+       cet_ucs4_to_ibm277_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm277_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm277_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 
+       0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 
+       0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 
+       0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 
+       0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x007d, 
+       0x00e7, 0x00f1, 0x0023, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 
+       0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 
+       0x00ec, 0x00df, 0x00a4, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e, 
+       0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x0024, 
+       0x00c7, 0x00d1, 0x00f8, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 
+       0x00a6, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 
+       0x00cc, 0x0060, 0x003a, 0x00c6, 0x00d8, 0x0027, 0x003d, 0x0022, 
+       0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 
+       0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x00aa, 0x00ba, 0x007b, 0x00b8, 0x005b, 0x005d, 
+       0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 
+       0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 
+       0x00bd, 0x00be, 0x00ac, 0x007c, 0x203e, 0x00a8, 0x00b4, 0x00d7, 
+       0x00e6, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 
+       0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff, 
+       0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm278.h b/gpsbabel/cet/ibm278.h
new file mode 100644 (file)
index 0000000..c42b908
--- /dev/null
@@ -0,0 +1,381 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM278" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm278_h
+#define ibm278_h
+
+#define cet_cs_name_ibm278 "IBM278"
+
+const char *cet_cs_alias_ibm278[] = 
+{
+       "IBM278/CR-LF", "278/CR-LF", "CP278/CR-LF", "ebcdic-cp-fi", 
+       "ebcdic-cp-se", NULL
+};
+
+#define cet_ucs4_ofs_ibm278 4
+#define cet_ucs4_cnt_ibm278 252
+
+const int cet_ucs4_map_ibm278[cet_ucs4_cnt_ibm278] =
+{
+       0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 
+       0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 
+       0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 
+       0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x007b, 
+       0x00e0, 0x00e1, 0x00e3, 0x007d, 0x00e7, 0x00f1, 0x00a7, 0x002e, 
+       0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x0060, 0x00ea, 0x00eb, 
+       0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00a4, 0x00c5, 
+       0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x0023, 
+       0x00c0, 0x00c1, 0x00c3, 0x0024, 0x00c7, 0x00d1, 0x00f6, 0x002c, 
+       0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00e9, 0x003a, 0x00c4, 
+       0x00d6, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 
+       0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 
+       0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 
+       0x00e6, 0x00b8, 0x00c6, 0x005d, 0x00b5, 0x00fc, 0x0073, 0x0074, 
+       0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 
+       0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 
+       0x00a9, 0x005b, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 
+       0x203e, 0x00a8, 0x00b4, 0x00d7, 0x00e4, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 
+       0x00a6, 0x00f2, 0x00f3, 0x00f5, 0x00e5, 0x004a, 0x004b, 0x004c, 
+       0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 
+       0x007e, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 
+       0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 
+       0x0040, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 
+       0x00dc, 0x00d9, 0x00da, 0x009f
+};
+
+#define cet_ucs4_to_ibm278_ct 236
+
+const cet_ucs4_link_t cet_ucs4_to_ibm278_links[cet_ucs4_to_ibm278_ct] =
+{
+        {0x0004, 0x37} /* of transmission (eot) */,
+        {0x0005, 0x2d} /* (enq) */,
+        {0x0006, 0x2e} /* (ack) */,
+        {0x0007, 0x2f} /* (bel) */,
+        {0x0008, 0x16} /* (bs) */,
+        {0x0009, 0x05} /* tabulation (ht) */,
+        {0x000a, 0x25} /* feed (lf) */,
+        {0x0014, 0x3c} /* control four (dc4) */,
+        {0x0015, 0x3d} /* acknowledge (nak) */,
+        {0x0016, 0x32} /* idle (syn) */,
+        {0x0017, 0x26} /* of transmission block (etb) */,
+        {0x001a, 0x3f} /* (sub) */,
+        {0x001b, 0x27} /* (esc) */,
+        {0x0020, 0x40} /* space */,
+        {0x0021, 0x4f} /* mark */,
+        {0x0022, 0x7f} /* mark */,
+        {0x0023, 0x63} /* sign */,
+        {0x0024, 0x67} /* sign */,
+        {0x0025, 0x6c} /* sign */,
+        {0x0026, 0x50} /* ampersand */,
+        {0x0027, 0x7d} /* apostrophe */,
+        {0x0028, 0x4d} /* parenthesis */,
+        {0x0029, 0x5d} /* parenthesis */,
+        {0x002a, 0x5c} /* asterisk */,
+        {0x002b, 0x4e} /* sign */,
+        {0x002c, 0x6b} /* comma */,
+        {0x002d, 0x60} /* hyphen-minus */,
+        {0x002e, 0x4b} /* stop */,
+        {0x002f, 0x61} /* solidus */,
+        {0x0030, 0xf0} /* zero */,
+        {0x0031, 0xf1} /* one */,
+        {0x0032, 0xf2} /* two */,
+        {0x0033, 0xf3} /* three */,
+        {0x0034, 0xf4} /* four */,
+        {0x0035, 0xf5} /* five */,
+        {0x0036, 0xf6} /* six */,
+        {0x0037, 0xf7} /* seven */,
+        {0x0038, 0xf8} /* eight */,
+        {0x0039, 0xf9} /* nine */,
+        {0x003a, 0x7a} /* colon */,
+        {0x003b, 0x5e} /* semicolon */,
+        {0x003c, 0x4c} /* sign */,
+        {0x003d, 0x7e} /* sign */,
+        {0x003e, 0x6e} /* sign */,
+        {0x003f, 0x6f} /* mark */,
+        {0x0040, 0xec} /* at */,
+        {0x0041, 0xc1} /* capital letter a */,
+        {0x0042, 0xc2} /* capital letter b */,
+        {0x0043, 0xc3} /* capital letter c */,
+        {0x0044, 0xc4} /* capital letter d */,
+        {0x0045, 0xc5} /* capital letter e */,
+        {0x0046, 0xc6} /* capital letter f */,
+        {0x0047, 0xc7} /* capital letter g */,
+        {0x0048, 0xc8} /* capital letter h */,
+        {0x0049, 0xc9} /* capital letter i */,
+        {0x004a, 0xd1} /* capital letter j */,
+        {0x004b, 0xd2} /* capital letter k */,
+        {0x004c, 0xd3} /* capital letter l */,
+        {0x004d, 0xd4} /* capital letter m */,
+        {0x004e, 0xd5} /* capital letter n */,
+        {0x004f, 0xd6} /* capital letter o */,
+        {0x0050, 0xd7} /* capital letter p */,
+        {0x0051, 0xd8} /* capital letter q */,
+        {0x0052, 0xd9} /* capital letter r */,
+        {0x0053, 0xe2} /* capital letter s */,
+        {0x0054, 0xe3} /* capital letter t */,
+        {0x0055, 0xe4} /* capital letter u */,
+        {0x0056, 0xe5} /* capital letter v */,
+        {0x0057, 0xe6} /* capital letter w */,
+        {0x0058, 0xe7} /* capital letter x */,
+        {0x0059, 0xe8} /* capital letter y */,
+        {0x005a, 0xe9} /* capital letter z */,
+        {0x005b, 0xb5} /* square bracket */,
+        {0x005c, 0xe0} /* solidus */,
+        {0x005d, 0x9f} /* square bracket */,
+        {0x005e, 0x5f} /* accent */,
+        {0x005f, 0x6d} /* line */,
+        {0x0060, 0x51} /* accent */,
+        {0x0061, 0x81} /* small letter a */,
+        {0x0062, 0x82} /* small letter b */,
+        {0x0063, 0x83} /* small letter c */,
+        {0x0064, 0x84} /* small letter d */,
+        {0x0065, 0x85} /* small letter e */,
+        {0x0066, 0x86} /* small letter f */,
+        {0x0067, 0x87} /* small letter g */,
+        {0x0068, 0x88} /* small letter h */,
+        {0x0069, 0x89} /* small letter i */,
+        {0x006a, 0x91} /* small letter j */,
+        {0x006b, 0x92} /* small letter k */,
+        {0x006c, 0x93} /* small letter l */,
+        {0x006d, 0x94} /* small letter m */,
+        {0x006e, 0x95} /* small letter n */,
+        {0x006f, 0x96} /* small letter o */,
+        {0x0070, 0x97} /* small letter p */,
+        {0x0071, 0x98} /* small letter q */,
+        {0x0072, 0x99} /* small letter r */,
+        {0x0073, 0xa2} /* small letter s */,
+        {0x0074, 0xa3} /* small letter t */,
+        {0x0075, 0xa4} /* small letter u */,
+        {0x0076, 0xa5} /* small letter v */,
+        {0x0077, 0xa6} /* small letter w */,
+        {0x0078, 0xa7} /* small letter x */,
+        {0x0079, 0xa8} /* small letter y */,
+        {0x007a, 0xa9} /* small letter z */,
+        {0x007b, 0x43} /* curly bracket */,
+        {0x007c, 0xbb} /* line */,
+        {0x007d, 0x47} /* curly bracket */,
+        {0x007e, 0xdc} /* tilde */,
+        {0x007f, 0x07} /* (del) */,
+        {0x0080, 0x20} /* character (pad) */,
+        {0x0081, 0x21} /* octet preset (hop) */,
+        {0x0082, 0x22} /* permitted here (bph) */,
+        {0x0083, 0x23} /* break here (nbh) */,
+        {0x0084, 0x24} /* (ind) */,
+        {0x0085, 0x15} /* line (nel) */,
+        {0x0086, 0x06} /* of selected area (ssa) */,
+        {0x0087, 0x17} /* of selected area (esa) */,
+        {0x0088, 0x28} /* tabulation set (hts) */,
+        {0x0089, 0x29} /* tabulation with justification (htj) */,
+        {0x008a, 0x2a} /* tabulation set (vts) */,
+        {0x008b, 0x2b} /* line forward (pld) */,
+        {0x008c, 0x2c} /* line backward (plu) */,
+        {0x008d, 0x09} /* line feed (ri) */,
+        {0x008e, 0x0a} /* two (ss2) */,
+        {0x008f, 0x1b} /* three (ss3) */,
+        {0x0090, 0x30} /* control string (dcs) */,
+        {0x0091, 0x31} /* use one (pu1) */,
+        {0x0092, 0x1a} /* use two (pu2) */,
+        {0x0093, 0x33} /* transmit state (sts) */,
+        {0x0094, 0x34} /* character (cch) */,
+        {0x0095, 0x35} /* waiting (mw) */,
+        {0x0096, 0x36} /* of guarded area (spa) */,
+        {0x0097, 0x08} /* of guarded area (epa) */,
+        {0x0098, 0x38} /* of string (sos) */,
+        {0x0099, 0x39} /* graphic character introducer (sgci) */,
+        {0x009a, 0x3a} /* character introducer (sci) */,
+        {0x009b, 0x3b} /* sequence introducer (csi) */,
+        {0x009c, 0x04} /* terminator (st) */,
+        {0x009d, 0x14} /* system command (osc) */,
+        {0x009e, 0x3e} /* message (pm) */,
+        {0x009f, 0xff} /* program command (apc) */,
+        {0x00a0, 0x41} /* space */,
+        {0x00a1, 0xaa} /* exclamation mark */,
+        {0x00a2, 0xb0} /* sign */,
+        {0x00a3, 0xb1} /* sign */,
+        {0x00a4, 0x5a} /* sign */,
+        {0x00a5, 0xb2} /* sign */,
+        {0x00a6, 0xcc} /* bar */,
+        {0x00a7, 0x4a} /* sign */,
+        {0x00a8, 0xbd} /* diaeresis */,
+        {0x00a9, 0xb4} /* sign */,
+        {0x00aa, 0x9a} /* ordinal indicator */,
+        {0x00ab, 0x8a} /* double angle quotation mark */,
+        {0x00ac, 0xba} /* sign */,
+        {0x00ad, 0xca} /* hyphen */,
+        {0x00ae, 0xaf} /* sign */,
+        {0x00b0, 0x90} /* sign */,
+        {0x00b1, 0x8f} /* sign */,
+        {0x00b2, 0xea} /* two */,
+        {0x00b3, 0xfa} /* three */,
+        {0x00b4, 0xbe} /* accent */,
+        {0x00b5, 0xa0} /* sign */,
+        {0x00b7, 0xb3} /* dot */,
+        {0x00b8, 0x9d} /* cedilla */,
+        {0x00b9, 0xda} /* one */,
+        {0x00ba, 0x9b} /* ordinal indicator */,
+        {0x00bb, 0x8b} /* double angle quotation mark */,
+        {0x00bc, 0xb7} /* fraction one quarter */,
+        {0x00bd, 0xb8} /* fraction one half */,
+        {0x00be, 0xb9} /* fraction three quarters */,
+        {0x00bf, 0xab} /* question mark */,
+        {0x00c0, 0x64} /* capital letter a with grave */,
+        {0x00c1, 0x65} /* capital letter a with acute */,
+        {0x00c2, 0x62} /* capital letter a with circumflex */,
+        {0x00c3, 0x66} /* capital letter a with tilde */,
+        {0x00c4, 0x7b} /* capital letter a with diaeresis */,
+        {0x00c5, 0x5b} /* capital letter a with ring above */,
+        {0x00c6, 0x9e} /* capital letter ae */,
+        {0x00c7, 0x68} /* capital letter c with cedilla */,
+        {0x00c8, 0x74} /* capital letter e with grave */,
+        {0x00c9, 0x71} /* capital letter e with acute */,
+        {0x00ca, 0x72} /* capital letter e with circumflex */,
+        {0x00cb, 0x73} /* capital letter e with diaeresis */,
+        {0x00cc, 0x78} /* capital letter i with grave */,
+        {0x00cd, 0x75} /* capital letter i with acute */,
+        {0x00ce, 0x76} /* capital letter i with circumflex */,
+        {0x00cf, 0x77} /* capital letter i with diaeresis */,
+        {0x00d0, 0xac} /* capital letter eth (icelandic) */,
+        {0x00d1, 0x69} /* capital letter n with tilde */,
+        {0x00d2, 0xed} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xeb} /* capital letter o with circumflex */,
+        {0x00d5, 0xef} /* capital letter o with tilde */,
+        {0x00d6, 0x7c} /* capital letter o with diaeresis */,
+        {0x00d7, 0xbf} /* sign */,
+        {0x00d8, 0x80} /* capital letter o with stroke */,
+        {0x00d9, 0xfd} /* capital letter u with grave */,
+        {0x00da, 0xfe} /* capital letter u with acute */,
+        {0x00db, 0xfb} /* capital letter u with circumflex */,
+        {0x00dc, 0xfc} /* capital letter u with diaeresis */,
+        {0x00dd, 0xad} /* capital letter y with acute */,
+        {0x00de, 0xae} /* capital letter thorn (icelandic) */,
+        {0x00df, 0x59} /* small letter sharp s (german) */,
+        {0x00e0, 0x44} /* small letter a with grave */,
+        {0x00e1, 0x45} /* small letter a with acute */,
+        {0x00e2, 0x42} /* small letter a with circumflex */,
+        {0x00e3, 0x46} /* small letter a with tilde */,
+        {0x00e4, 0xc0} /* small letter a with diaeresis */,
+        {0x00e5, 0xd0} /* small letter a with ring above */,
+        {0x00e6, 0x9c} /* small letter ae */,
+        {0x00e7, 0x48} /* small letter c with cedilla */,
+        {0x00e8, 0x54} /* small letter e with grave */,
+        {0x00e9, 0x79} /* small letter e with acute */,
+        {0x00ea, 0x52} /* small letter e with circumflex */,
+        {0x00eb, 0x53} /* small letter e with diaeresis */,
+        {0x00ec, 0x58} /* small letter i with grave */,
+        {0x00ed, 0x55} /* small letter i with acute */,
+        {0x00ee, 0x56} /* small letter i with circumflex */,
+        {0x00ef, 0x57} /* small letter i with diaeresis */,
+        {0x00f0, 0x8c} /* small letter eth (icelandic) */,
+        {0x00f1, 0x49} /* small letter n with tilde */,
+        {0x00f2, 0xcd} /* small letter o with grave */,
+        {0x00f3, 0xce} /* small letter o with acute */,
+        {0x00f4, 0xcb} /* small letter o with circumflex */,
+        {0x00f5, 0xcf} /* small letter o with tilde */,
+        {0x00f6, 0x6a} /* small letter o with diaeresis */,
+        {0x00f7, 0xe1} /* sign */,
+        {0x00f8, 0x70} /* small letter o with stroke */,
+        {0x00f9, 0xdd} /* small letter u with grave */,
+        {0x00fa, 0xde} /* small letter u with acute */,
+        {0x00fb, 0xdb} /* small letter u with circumflex */,
+        {0x00fc, 0xa1} /* small letter u with diaeresis */,
+        {0x00fd, 0x8d} /* small letter y with acute */,
+        {0x00fe, 0x8e} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xdf} /* small letter y with diaeresis */,
+        {0x203e, 0xbc} /* overline */
+};
+
+/*
+#define cet_ucs4_to_ibm278_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm278_extra[cet_ucs4_to_ibm278_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm278 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm278,             /* name of character set        */
+       cet_cs_alias_ibm278,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm278,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm278,            /* first non standard character */
+       cet_ucs4_cnt_ibm278,            /* number of values in table    */
+
+       cet_ucs4_to_ibm278_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm278_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm278_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 
+       0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 
+       0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 
+       0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 
+       0x0020, 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x007d, 
+       0x00e7, 0x00f1, 0x00a7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 
+       0x0026, 0x0060, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 
+       0x00ec, 0x00df, 0x00a4, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e, 
+       0x002d, 0x002f, 0x00c2, 0x0023, 0x00c0, 0x00c1, 0x00c3, 0x0024, 
+       0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 
+       0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 
+       0x00cc, 0x00e9, 0x003a, 0x00c4, 0x00d6, 0x0027, 0x003d, 0x0022, 
+       0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 
+       0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x005d, 
+       0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 
+       0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x005b, 0x00b6, 0x00bc, 
+       0x00bd, 0x00be, 0x00ac, 0x007c, 0x203e, 0x00a8, 0x00b4, 0x00d7, 
+       0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5, 
+       0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff, 
+       0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x00b2, 0x00d4, 0x0040, 0x00d2, 0x00d3, 0x00d5, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm280.h b/gpsbabel/cet/ibm280.h
new file mode 100644 (file)
index 0000000..d996ae1
--- /dev/null
@@ -0,0 +1,381 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM280" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm280_h
+#define ibm280_h
+
+#define cet_cs_name_ibm280 "IBM280"
+
+const char *cet_cs_alias_ibm280[] = 
+{
+       "IBM280/CR-LF", "280/CR-LF", "CP280/CR-LF", "ebcdic-cp-it",
+       NULL
+};
+
+#define cet_ucs4_ofs_ibm280 4
+#define cet_ucs4_cnt_ibm280 252
+
+const int cet_ucs4_map_ibm280[cet_ucs4_cnt_ibm280] =
+{
+       0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 
+       0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 
+       0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 
+       0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 
+       0x007b, 0x00e1, 0x00e3, 0x00e5, 0x005c, 0x00f1, 0x00b0, 0x002e, 
+       0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x005d, 0x00ea, 0x00eb, 
+       0x007d, 0x00ed, 0x00ee, 0x00ef, 0x007e, 0x00df, 0x00e9, 0x0024, 
+       0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 
+       0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00f2, 0x002c, 
+       0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00f9, 0x003a, 0x00a3, 
+       0x00a7, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 
+       0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x005b, 0x006a, 0x006b, 0x006c, 
+       0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 
+       0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x00ec, 0x0073, 0x0074, 
+       0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 
+       0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x0023, 0x00a5, 0x00b7, 
+       0x00a9, 0x0040, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 
+       0x203e, 0x00a8, 0x00b4, 0x00d7, 0x00e0, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 
+       0x00f6, 0x00a6, 0x00f3, 0x00f5, 0x00e8, 0x004a, 0x004b, 0x004c, 
+       0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 
+       0x00fc, 0x0060, 0x00fa, 0x00ff, 0x00e7, 0x00f7, 0x0053, 0x0054, 
+       0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 
+       0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 
+       0x00dc, 0x00d9, 0x00da, 0x009f
+};
+
+#define cet_ucs4_to_ibm280_ct 236
+
+const cet_ucs4_link_t cet_ucs4_to_ibm280_links[cet_ucs4_to_ibm280_ct] =
+{
+        {0x0004, 0x37} /* of transmission (eot) */,
+        {0x0005, 0x2d} /* (enq) */,
+        {0x0006, 0x2e} /* (ack) */,
+        {0x0007, 0x2f} /* (bel) */,
+        {0x0008, 0x16} /* (bs) */,
+        {0x0009, 0x05} /* tabulation (ht) */,
+        {0x000a, 0x25} /* feed (lf) */,
+        {0x0014, 0x3c} /* control four (dc4) */,
+        {0x0015, 0x3d} /* acknowledge (nak) */,
+        {0x0016, 0x32} /* idle (syn) */,
+        {0x0017, 0x26} /* of transmission block (etb) */,
+        {0x001a, 0x3f} /* (sub) */,
+        {0x001b, 0x27} /* (esc) */,
+        {0x0020, 0x40} /* space */,
+        {0x0021, 0x4f} /* mark */,
+        {0x0022, 0x7f} /* mark */,
+        {0x0023, 0xb1} /* sign */,
+        {0x0024, 0x5b} /* sign */,
+        {0x0025, 0x6c} /* sign */,
+        {0x0026, 0x50} /* ampersand */,
+        {0x0027, 0x7d} /* apostrophe */,
+        {0x0028, 0x4d} /* parenthesis */,
+        {0x0029, 0x5d} /* parenthesis */,
+        {0x002a, 0x5c} /* asterisk */,
+        {0x002b, 0x4e} /* sign */,
+        {0x002c, 0x6b} /* comma */,
+        {0x002d, 0x60} /* hyphen-minus */,
+        {0x002e, 0x4b} /* stop */,
+        {0x002f, 0x61} /* solidus */,
+        {0x0030, 0xf0} /* zero */,
+        {0x0031, 0xf1} /* one */,
+        {0x0032, 0xf2} /* two */,
+        {0x0033, 0xf3} /* three */,
+        {0x0034, 0xf4} /* four */,
+        {0x0035, 0xf5} /* five */,
+        {0x0036, 0xf6} /* six */,
+        {0x0037, 0xf7} /* seven */,
+        {0x0038, 0xf8} /* eight */,
+        {0x0039, 0xf9} /* nine */,
+        {0x003a, 0x7a} /* colon */,
+        {0x003b, 0x5e} /* semicolon */,
+        {0x003c, 0x4c} /* sign */,
+        {0x003d, 0x7e} /* sign */,
+        {0x003e, 0x6e} /* sign */,
+        {0x003f, 0x6f} /* mark */,
+        {0x0040, 0xb5} /* at */,
+        {0x0041, 0xc1} /* capital letter a */,
+        {0x0042, 0xc2} /* capital letter b */,
+        {0x0043, 0xc3} /* capital letter c */,
+        {0x0044, 0xc4} /* capital letter d */,
+        {0x0045, 0xc5} /* capital letter e */,
+        {0x0046, 0xc6} /* capital letter f */,
+        {0x0047, 0xc7} /* capital letter g */,
+        {0x0048, 0xc8} /* capital letter h */,
+        {0x0049, 0xc9} /* capital letter i */,
+        {0x004a, 0xd1} /* capital letter j */,
+        {0x004b, 0xd2} /* capital letter k */,
+        {0x004c, 0xd3} /* capital letter l */,
+        {0x004d, 0xd4} /* capital letter m */,
+        {0x004e, 0xd5} /* capital letter n */,
+        {0x004f, 0xd6} /* capital letter o */,
+        {0x0050, 0xd7} /* capital letter p */,
+        {0x0051, 0xd8} /* capital letter q */,
+        {0x0052, 0xd9} /* capital letter r */,
+        {0x0053, 0xe2} /* capital letter s */,
+        {0x0054, 0xe3} /* capital letter t */,
+        {0x0055, 0xe4} /* capital letter u */,
+        {0x0056, 0xe5} /* capital letter v */,
+        {0x0057, 0xe6} /* capital letter w */,
+        {0x0058, 0xe7} /* capital letter x */,
+        {0x0059, 0xe8} /* capital letter y */,
+        {0x005a, 0xe9} /* capital letter z */,
+        {0x005b, 0x90} /* square bracket */,
+        {0x005c, 0x48} /* solidus */,
+        {0x005d, 0x51} /* square bracket */,
+        {0x005e, 0x5f} /* accent */,
+        {0x005f, 0x6d} /* line */,
+        {0x0060, 0xdd} /* accent */,
+        {0x0061, 0x81} /* small letter a */,
+        {0x0062, 0x82} /* small letter b */,
+        {0x0063, 0x83} /* small letter c */,
+        {0x0064, 0x84} /* small letter d */,
+        {0x0065, 0x85} /* small letter e */,
+        {0x0066, 0x86} /* small letter f */,
+        {0x0067, 0x87} /* small letter g */,
+        {0x0068, 0x88} /* small letter h */,
+        {0x0069, 0x89} /* small letter i */,
+        {0x006a, 0x91} /* small letter j */,
+        {0x006b, 0x92} /* small letter k */,
+        {0x006c, 0x93} /* small letter l */,
+        {0x006d, 0x94} /* small letter m */,
+        {0x006e, 0x95} /* small letter n */,
+        {0x006f, 0x96} /* small letter o */,
+        {0x0070, 0x97} /* small letter p */,
+        {0x0071, 0x98} /* small letter q */,
+        {0x0072, 0x99} /* small letter r */,
+        {0x0073, 0xa2} /* small letter s */,
+        {0x0074, 0xa3} /* small letter t */,
+        {0x0075, 0xa4} /* small letter u */,
+        {0x0076, 0xa5} /* small letter v */,
+        {0x0077, 0xa6} /* small letter w */,
+        {0x0078, 0xa7} /* small letter x */,
+        {0x0079, 0xa8} /* small letter y */,
+        {0x007a, 0xa9} /* small letter z */,
+        {0x007b, 0x44} /* curly bracket */,
+        {0x007c, 0xbb} /* line */,
+        {0x007d, 0x54} /* curly bracket */,
+        {0x007e, 0x58} /* tilde */,
+        {0x007f, 0x07} /* (del) */,
+        {0x0080, 0x20} /* character (pad) */,
+        {0x0081, 0x21} /* octet preset (hop) */,
+        {0x0082, 0x22} /* permitted here (bph) */,
+        {0x0083, 0x23} /* break here (nbh) */,
+        {0x0084, 0x24} /* (ind) */,
+        {0x0085, 0x15} /* line (nel) */,
+        {0x0086, 0x06} /* of selected area (ssa) */,
+        {0x0087, 0x17} /* of selected area (esa) */,
+        {0x0088, 0x28} /* tabulation set (hts) */,
+        {0x0089, 0x29} /* tabulation with justification (htj) */,
+        {0x008a, 0x2a} /* tabulation set (vts) */,
+        {0x008b, 0x2b} /* line forward (pld) */,
+        {0x008c, 0x2c} /* line backward (plu) */,
+        {0x008d, 0x09} /* line feed (ri) */,
+        {0x008e, 0x0a} /* two (ss2) */,
+        {0x008f, 0x1b} /* three (ss3) */,
+        {0x0090, 0x30} /* control string (dcs) */,
+        {0x0091, 0x31} /* use one (pu1) */,
+        {0x0092, 0x1a} /* use two (pu2) */,
+        {0x0093, 0x33} /* transmit state (sts) */,
+        {0x0094, 0x34} /* character (cch) */,
+        {0x0095, 0x35} /* waiting (mw) */,
+        {0x0096, 0x36} /* of guarded area (spa) */,
+        {0x0097, 0x08} /* of guarded area (epa) */,
+        {0x0098, 0x38} /* of string (sos) */,
+        {0x0099, 0x39} /* graphic character introducer (sgci) */,
+        {0x009a, 0x3a} /* character introducer (sci) */,
+        {0x009b, 0x3b} /* sequence introducer (csi) */,
+        {0x009c, 0x04} /* terminator (st) */,
+        {0x009d, 0x14} /* system command (osc) */,
+        {0x009e, 0x3e} /* message (pm) */,
+        {0x009f, 0xff} /* program command (apc) */,
+        {0x00a0, 0x41} /* space */,
+        {0x00a1, 0xaa} /* exclamation mark */,
+        {0x00a2, 0xb0} /* sign */,
+        {0x00a3, 0x7b} /* sign */,
+        {0x00a4, 0x9f} /* sign */,
+        {0x00a5, 0xb2} /* sign */,
+        {0x00a6, 0xcd} /* bar */,
+        {0x00a7, 0x7c} /* sign */,
+        {0x00a8, 0xbd} /* diaeresis */,
+        {0x00a9, 0xb4} /* sign */,
+        {0x00aa, 0x9a} /* ordinal indicator */,
+        {0x00ab, 0x8a} /* double angle quotation mark */,
+        {0x00ac, 0xba} /* sign */,
+        {0x00ad, 0xca} /* hyphen */,
+        {0x00ae, 0xaf} /* sign */,
+        {0x00b0, 0x4a} /* sign */,
+        {0x00b1, 0x8f} /* sign */,
+        {0x00b2, 0xea} /* two */,
+        {0x00b3, 0xfa} /* three */,
+        {0x00b4, 0xbe} /* accent */,
+        {0x00b5, 0xa0} /* sign */,
+        {0x00b7, 0xb3} /* dot */,
+        {0x00b8, 0x9d} /* cedilla */,
+        {0x00b9, 0xda} /* one */,
+        {0x00ba, 0x9b} /* ordinal indicator */,
+        {0x00bb, 0x8b} /* double angle quotation mark */,
+        {0x00bc, 0xb7} /* fraction one quarter */,
+        {0x00bd, 0xb8} /* fraction one half */,
+        {0x00be, 0xb9} /* fraction three quarters */,
+        {0x00bf, 0xab} /* question mark */,
+        {0x00c0, 0x64} /* capital letter a with grave */,
+        {0x00c1, 0x65} /* capital letter a with acute */,
+        {0x00c2, 0x62} /* capital letter a with circumflex */,
+        {0x00c3, 0x66} /* capital letter a with tilde */,
+        {0x00c4, 0x63} /* capital letter a with diaeresis */,
+        {0x00c5, 0x67} /* capital letter a with ring above */,
+        {0x00c6, 0x9e} /* capital letter ae */,
+        {0x00c7, 0x68} /* capital letter c with cedilla */,
+        {0x00c8, 0x74} /* capital letter e with grave */,
+        {0x00c9, 0x71} /* capital letter e with acute */,
+        {0x00ca, 0x72} /* capital letter e with circumflex */,
+        {0x00cb, 0x73} /* capital letter e with diaeresis */,
+        {0x00cc, 0x78} /* capital letter i with grave */,
+        {0x00cd, 0x75} /* capital letter i with acute */,
+        {0x00ce, 0x76} /* capital letter i with circumflex */,
+        {0x00cf, 0x77} /* capital letter i with diaeresis */,
+        {0x00d0, 0xac} /* capital letter eth (icelandic) */,
+        {0x00d1, 0x69} /* capital letter n with tilde */,
+        {0x00d2, 0xed} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xeb} /* capital letter o with circumflex */,
+        {0x00d5, 0xef} /* capital letter o with tilde */,
+        {0x00d6, 0xec} /* capital letter o with diaeresis */,
+        {0x00d7, 0xbf} /* sign */,
+        {0x00d8, 0x80} /* capital letter o with stroke */,
+        {0x00d9, 0xfd} /* capital letter u with grave */,
+        {0x00da, 0xfe} /* capital letter u with acute */,
+        {0x00db, 0xfb} /* capital letter u with circumflex */,
+        {0x00dc, 0xfc} /* capital letter u with diaeresis */,
+        {0x00dd, 0xad} /* capital letter y with acute */,
+        {0x00de, 0xae} /* capital letter thorn (icelandic) */,
+        {0x00df, 0x59} /* small letter sharp s (german) */,
+        {0x00e0, 0xc0} /* small letter a with grave */,
+        {0x00e1, 0x45} /* small letter a with acute */,
+        {0x00e2, 0x42} /* small letter a with circumflex */,
+        {0x00e3, 0x46} /* small letter a with tilde */,
+        {0x00e4, 0x43} /* small letter a with diaeresis */,
+        {0x00e5, 0x47} /* small letter a with ring above */,
+        {0x00e6, 0x9c} /* small letter ae */,
+        {0x00e7, 0xe0} /* small letter c with cedilla */,
+        {0x00e8, 0xd0} /* small letter e with grave */,
+        {0x00e9, 0x5a} /* small letter e with acute */,
+        {0x00ea, 0x52} /* small letter e with circumflex */,
+        {0x00eb, 0x53} /* small letter e with diaeresis */,
+        {0x00ec, 0xa1} /* small letter i with grave */,
+        {0x00ed, 0x55} /* small letter i with acute */,
+        {0x00ee, 0x56} /* small letter i with circumflex */,
+        {0x00ef, 0x57} /* small letter i with diaeresis */,
+        {0x00f0, 0x8c} /* small letter eth (icelandic) */,
+        {0x00f1, 0x49} /* small letter n with tilde */,
+        {0x00f2, 0x6a} /* small letter o with grave */,
+        {0x00f3, 0xce} /* small letter o with acute */,
+        {0x00f4, 0xcb} /* small letter o with circumflex */,
+        {0x00f5, 0xcf} /* small letter o with tilde */,
+        {0x00f6, 0xcc} /* small letter o with diaeresis */,
+        {0x00f7, 0xe1} /* sign */,
+        {0x00f8, 0x70} /* small letter o with stroke */,
+        {0x00f9, 0x79} /* small letter u with grave */,
+        {0x00fa, 0xde} /* small letter u with acute */,
+        {0x00fb, 0xdb} /* small letter u with circumflex */,
+        {0x00fc, 0xdc} /* small letter u with diaeresis */,
+        {0x00fd, 0x8d} /* small letter y with acute */,
+        {0x00fe, 0x8e} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xdf} /* small letter y with diaeresis */,
+        {0x203e, 0xbc} /* overline */
+};
+
+/*
+#define cet_ucs4_to_ibm280_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm280_extra[cet_ucs4_to_ibm280_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm280 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm280,             /* name of character set        */
+       cet_cs_alias_ibm280,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm280,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm280,            /* first non standard character */
+       cet_ucs4_cnt_ibm280,            /* number of values in table    */
+
+       cet_ucs4_to_ibm280_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm280_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm280_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 
+       0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 
+       0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 
+       0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 
+       0x0020, 0x00a0, 0x00e2, 0x00e4, 0x007b, 0x00e1, 0x00e3, 0x00e5, 
+       0x005c, 0x00f1, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 
+       0x0026, 0x005d, 0x00ea, 0x00eb, 0x007d, 0x00ed, 0x00ee, 0x00ef, 
+       0x007e, 0x00df, 0x00e9, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 
+       0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 
+       0x00c7, 0x00d1, 0x00f2, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 
+       0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 
+       0x00cc, 0x00f9, 0x003a, 0x00a3, 0x00a7, 0x0027, 0x003d, 0x0022, 
+       0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 
+       0x005b, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 
+       0x00b5, 0x00ec, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 
+       0x00a2, 0x0023, 0x00a5, 0x00b7, 0x00a9, 0x0040, 0x00b6, 0x00bc, 
+       0x00bd, 0x00be, 0x00ac, 0x007c, 0x203e, 0x00a8, 0x00b4, 0x00d7, 
+       0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00a6, 0x00f3, 0x00f5, 
+       0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x0060, 0x00fa, 0x00ff, 
+       0x00e7, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm284.h b/gpsbabel/cet/ibm284.h
new file mode 100644 (file)
index 0000000..e3ba3f5
--- /dev/null
@@ -0,0 +1,381 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM284" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm284_h
+#define ibm284_h
+
+#define cet_cs_name_ibm284 "IBM284"
+
+const char *cet_cs_alias_ibm284[] = 
+{
+       "IBM284/CR-LF", "284/CR-LF", "CP284/CR-LF", "ebcdic-cp-es",
+       NULL
+};
+
+#define cet_ucs4_ofs_ibm284 4
+#define cet_ucs4_cnt_ibm284 252
+
+const int cet_ucs4_map_ibm284[cet_ucs4_cnt_ibm284] =
+{
+       0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 
+       0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 
+       0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 
+       0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 
+       0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00a6, 0x005b, 0x002e, 
+       0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 
+       0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x005d, 0x0024, 
+       0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x00c2, 0x00c4, 
+       0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x0023, 0x00f1, 0x002c, 
+       0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x00d1, 
+       0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 
+       0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 
+       0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 
+       0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x00a8, 0x0073, 0x0074, 
+       0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 
+       0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 
+       0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005e, 0x0021, 
+       0x203e, 0x007e, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 
+       0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 
+       0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 
+       0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 
+       0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 
+       0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 
+       0x00dc, 0x00d9, 0x00da, 0x009f
+};
+
+#define cet_ucs4_to_ibm284_ct 236
+
+const cet_ucs4_link_t cet_ucs4_to_ibm284_links[cet_ucs4_to_ibm284_ct] =
+{
+        {0x0004, 0x37} /* of transmission (eot) */,
+        {0x0005, 0x2d} /* (enq) */,
+        {0x0006, 0x2e} /* (ack) */,
+        {0x0007, 0x2f} /* (bel) */,
+        {0x0008, 0x16} /* (bs) */,
+        {0x0009, 0x05} /* tabulation (ht) */,
+        {0x000a, 0x25} /* feed (lf) */,
+        {0x0014, 0x3c} /* control four (dc4) */,
+        {0x0015, 0x3d} /* acknowledge (nak) */,
+        {0x0016, 0x32} /* idle (syn) */,
+        {0x0017, 0x26} /* of transmission block (etb) */,
+        {0x001a, 0x3f} /* (sub) */,
+        {0x001b, 0x27} /* (esc) */,
+        {0x0020, 0x40} /* space */,
+        {0x0021, 0xbb} /* mark */,
+        {0x0022, 0x7f} /* mark */,
+        {0x0023, 0x69} /* sign */,
+        {0x0024, 0x5b} /* sign */,
+        {0x0025, 0x6c} /* sign */,
+        {0x0026, 0x50} /* ampersand */,
+        {0x0027, 0x7d} /* apostrophe */,
+        {0x0028, 0x4d} /* parenthesis */,
+        {0x0029, 0x5d} /* parenthesis */,
+        {0x002a, 0x5c} /* asterisk */,
+        {0x002b, 0x4e} /* sign */,
+        {0x002c, 0x6b} /* comma */,
+        {0x002d, 0x60} /* hyphen-minus */,
+        {0x002e, 0x4b} /* stop */,
+        {0x002f, 0x61} /* solidus */,
+        {0x0030, 0xf0} /* zero */,
+        {0x0031, 0xf1} /* one */,
+        {0x0032, 0xf2} /* two */,
+        {0x0033, 0xf3} /* three */,
+        {0x0034, 0xf4} /* four */,
+        {0x0035, 0xf5} /* five */,
+        {0x0036, 0xf6} /* six */,
+        {0x0037, 0xf7} /* seven */,
+        {0x0038, 0xf8} /* eight */,
+        {0x0039, 0xf9} /* nine */,
+        {0x003a, 0x7a} /* colon */,
+        {0x003b, 0x5e} /* semicolon */,
+        {0x003c, 0x4c} /* sign */,
+        {0x003d, 0x7e} /* sign */,
+        {0x003e, 0x6e} /* sign */,
+        {0x003f, 0x6f} /* mark */,
+        {0x0040, 0x7c} /* at */,
+        {0x0041, 0xc1} /* capital letter a */,
+        {0x0042, 0xc2} /* capital letter b */,
+        {0x0043, 0xc3} /* capital letter c */,
+        {0x0044, 0xc4} /* capital letter d */,
+        {0x0045, 0xc5} /* capital letter e */,
+        {0x0046, 0xc6} /* capital letter f */,
+        {0x0047, 0xc7} /* capital letter g */,
+        {0x0048, 0xc8} /* capital letter h */,
+        {0x0049, 0xc9} /* capital letter i */,
+        {0x004a, 0xd1} /* capital letter j */,
+        {0x004b, 0xd2} /* capital letter k */,
+        {0x004c, 0xd3} /* capital letter l */,
+        {0x004d, 0xd4} /* capital letter m */,
+        {0x004e, 0xd5} /* capital letter n */,
+        {0x004f, 0xd6} /* capital letter o */,
+        {0x0050, 0xd7} /* capital letter p */,
+        {0x0051, 0xd8} /* capital letter q */,
+        {0x0052, 0xd9} /* capital letter r */,
+        {0x0053, 0xe2} /* capital letter s */,
+        {0x0054, 0xe3} /* capital letter t */,
+        {0x0055, 0xe4} /* capital letter u */,
+        {0x0056, 0xe5} /* capital letter v */,
+        {0x0057, 0xe6} /* capital letter w */,
+        {0x0058, 0xe7} /* capital letter x */,
+        {0x0059, 0xe8} /* capital letter y */,
+        {0x005a, 0xe9} /* capital letter z */,
+        {0x005b, 0x4a} /* square bracket */,
+        {0x005c, 0xe0} /* solidus */,
+        {0x005d, 0x5a} /* square bracket */,
+        {0x005e, 0xba} /* accent */,
+        {0x005f, 0x6d} /* line */,
+        {0x0060, 0x79} /* accent */,
+        {0x0061, 0x81} /* small letter a */,
+        {0x0062, 0x82} /* small letter b */,
+        {0x0063, 0x83} /* small letter c */,
+        {0x0064, 0x84} /* small letter d */,
+        {0x0065, 0x85} /* small letter e */,
+        {0x0066, 0x86} /* small letter f */,
+        {0x0067, 0x87} /* small letter g */,
+        {0x0068, 0x88} /* small letter h */,
+        {0x0069, 0x89} /* small letter i */,
+        {0x006a, 0x91} /* small letter j */,
+        {0x006b, 0x92} /* small letter k */,
+        {0x006c, 0x93} /* small letter l */,
+        {0x006d, 0x94} /* small letter m */,
+        {0x006e, 0x95} /* small letter n */,
+        {0x006f, 0x96} /* small letter o */,
+        {0x0070, 0x97} /* small letter p */,
+        {0x0071, 0x98} /* small letter q */,
+        {0x0072, 0x99} /* small letter r */,
+        {0x0073, 0xa2} /* small letter s */,
+        {0x0074, 0xa3} /* small letter t */,
+        {0x0075, 0xa4} /* small letter u */,
+        {0x0076, 0xa5} /* small letter v */,
+        {0x0077, 0xa6} /* small letter w */,
+        {0x0078, 0xa7} /* small letter x */,
+        {0x0079, 0xa8} /* small letter y */,
+        {0x007a, 0xa9} /* small letter z */,
+        {0x007b, 0xc0} /* curly bracket */,
+        {0x007c, 0x4f} /* line */,
+        {0x007d, 0xd0} /* curly bracket */,
+        {0x007e, 0xbd} /* tilde */,
+        {0x007f, 0x07} /* (del) */,
+        {0x0080, 0x20} /* character (pad) */,
+        {0x0081, 0x21} /* octet preset (hop) */,
+        {0x0082, 0x22} /* permitted here (bph) */,
+        {0x0083, 0x23} /* break here (nbh) */,
+        {0x0084, 0x24} /* (ind) */,
+        {0x0085, 0x15} /* line (nel) */,
+        {0x0086, 0x06} /* of selected area (ssa) */,
+        {0x0087, 0x17} /* of selected area (esa) */,
+        {0x0088, 0x28} /* tabulation set (hts) */,
+        {0x0089, 0x29} /* tabulation with justification (htj) */,
+        {0x008a, 0x2a} /* tabulation set (vts) */,
+        {0x008b, 0x2b} /* line forward (pld) */,
+        {0x008c, 0x2c} /* line backward (plu) */,
+        {0x008d, 0x09} /* line feed (ri) */,
+        {0x008e, 0x0a} /* two (ss2) */,
+        {0x008f, 0x1b} /* three (ss3) */,
+        {0x0090, 0x30} /* control string (dcs) */,
+        {0x0091, 0x31} /* use one (pu1) */,
+        {0x0092, 0x1a} /* use two (pu2) */,
+        {0x0093, 0x33} /* transmit state (sts) */,
+        {0x0094, 0x34} /* character (cch) */,
+        {0x0095, 0x35} /* waiting (mw) */,
+        {0x0096, 0x36} /* of guarded area (spa) */,
+        {0x0097, 0x08} /* of guarded area (epa) */,
+        {0x0098, 0x38} /* of string (sos) */,
+        {0x0099, 0x39} /* graphic character introducer (sgci) */,
+        {0x009a, 0x3a} /* character introducer (sci) */,
+        {0x009b, 0x3b} /* sequence introducer (csi) */,
+        {0x009c, 0x04} /* terminator (st) */,
+        {0x009d, 0x14} /* system command (osc) */,
+        {0x009e, 0x3e} /* message (pm) */,
+        {0x009f, 0xff} /* program command (apc) */,
+        {0x00a0, 0x41} /* space */,
+        {0x00a1, 0xaa} /* exclamation mark */,
+        {0x00a2, 0xb0} /* sign */,
+        {0x00a3, 0xb1} /* sign */,
+        {0x00a4, 0x9f} /* sign */,
+        {0x00a5, 0xb2} /* sign */,
+        {0x00a6, 0x49} /* bar */,
+        {0x00a7, 0xb5} /* sign */,
+        {0x00a8, 0xa1} /* diaeresis */,
+        {0x00a9, 0xb4} /* sign */,
+        {0x00aa, 0x9a} /* ordinal indicator */,
+        {0x00ab, 0x8a} /* double angle quotation mark */,
+        {0x00ac, 0x5f} /* sign */,
+        {0x00ad, 0xca} /* hyphen */,
+        {0x00ae, 0xaf} /* sign */,
+        {0x00b0, 0x90} /* sign */,
+        {0x00b1, 0x8f} /* sign */,
+        {0x00b2, 0xea} /* two */,
+        {0x00b3, 0xfa} /* three */,
+        {0x00b4, 0xbe} /* accent */,
+        {0x00b5, 0xa0} /* sign */,
+        {0x00b7, 0xb3} /* dot */,
+        {0x00b8, 0x9d} /* cedilla */,
+        {0x00b9, 0xda} /* one */,
+        {0x00ba, 0x9b} /* ordinal indicator */,
+        {0x00bb, 0x8b} /* double angle quotation mark */,
+        {0x00bc, 0xb7} /* fraction one quarter */,
+        {0x00bd, 0xb8} /* fraction one half */,
+        {0x00be, 0xb9} /* fraction three quarters */,
+        {0x00bf, 0xab} /* question mark */,
+        {0x00c0, 0x64} /* capital letter a with grave */,
+        {0x00c1, 0x65} /* capital letter a with acute */,
+        {0x00c2, 0x62} /* capital letter a with circumflex */,
+        {0x00c3, 0x66} /* capital letter a with tilde */,
+        {0x00c4, 0x63} /* capital letter a with diaeresis */,
+        {0x00c5, 0x67} /* capital letter a with ring above */,
+        {0x00c6, 0x9e} /* capital letter ae */,
+        {0x00c7, 0x68} /* capital letter c with cedilla */,
+        {0x00c8, 0x74} /* capital letter e with grave */,
+        {0x00c9, 0x71} /* capital letter e with acute */,
+        {0x00ca, 0x72} /* capital letter e with circumflex */,
+        {0x00cb, 0x73} /* capital letter e with diaeresis */,
+        {0x00cc, 0x78} /* capital letter i with grave */,
+        {0x00cd, 0x75} /* capital letter i with acute */,
+        {0x00ce, 0x76} /* capital letter i with circumflex */,
+        {0x00cf, 0x77} /* capital letter i with diaeresis */,
+        {0x00d0, 0xac} /* capital letter eth (icelandic) */,
+        {0x00d1, 0x7b} /* capital letter n with tilde */,
+        {0x00d2, 0xed} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xeb} /* capital letter o with circumflex */,
+        {0x00d5, 0xef} /* capital letter o with tilde */,
+        {0x00d6, 0xec} /* capital letter o with diaeresis */,
+        {0x00d7, 0xbf} /* sign */,
+        {0x00d8, 0x80} /* capital letter o with stroke */,
+        {0x00d9, 0xfd} /* capital letter u with grave */,
+        {0x00da, 0xfe} /* capital letter u with acute */,
+        {0x00db, 0xfb} /* capital letter u with circumflex */,
+        {0x00dc, 0xfc} /* capital letter u with diaeresis */,
+        {0x00dd, 0xad} /* capital letter y with acute */,
+        {0x00de, 0xae} /* capital letter thorn (icelandic) */,
+        {0x00df, 0x59} /* small letter sharp s (german) */,
+        {0x00e0, 0x44} /* small letter a with grave */,
+        {0x00e1, 0x45} /* small letter a with acute */,
+        {0x00e2, 0x42} /* small letter a with circumflex */,
+        {0x00e3, 0x46} /* small letter a with tilde */,
+        {0x00e4, 0x43} /* small letter a with diaeresis */,
+        {0x00e5, 0x47} /* small letter a with ring above */,
+        {0x00e6, 0x9c} /* small letter ae */,
+        {0x00e7, 0x48} /* small letter c with cedilla */,
+        {0x00e8, 0x54} /* small letter e with grave */,
+        {0x00e9, 0x51} /* small letter e with acute */,
+        {0x00ea, 0x52} /* small letter e with circumflex */,
+        {0x00eb, 0x53} /* small letter e with diaeresis */,
+        {0x00ec, 0x58} /* small letter i with grave */,
+        {0x00ed, 0x55} /* small letter i with acute */,
+        {0x00ee, 0x56} /* small letter i with circumflex */,
+        {0x00ef, 0x57} /* small letter i with diaeresis */,
+        {0x00f0, 0x8c} /* small letter eth (icelandic) */,
+        {0x00f1, 0x6a} /* small letter n with tilde */,
+        {0x00f2, 0xcd} /* small letter o with grave */,
+        {0x00f3, 0xce} /* small letter o with acute */,
+        {0x00f4, 0xcb} /* small letter o with circumflex */,
+        {0x00f5, 0xcf} /* small letter o with tilde */,
+        {0x00f6, 0xcc} /* small letter o with diaeresis */,
+        {0x00f7, 0xe1} /* sign */,
+        {0x00f8, 0x70} /* small letter o with stroke */,
+        {0x00f9, 0xdd} /* small letter u with grave */,
+        {0x00fa, 0xde} /* small letter u with acute */,
+        {0x00fb, 0xdb} /* small letter u with circumflex */,
+        {0x00fc, 0xdc} /* small letter u with diaeresis */,
+        {0x00fd, 0x8d} /* small letter y with acute */,
+        {0x00fe, 0x8e} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xdf} /* small letter y with diaeresis */,
+        {0x203e, 0xbc} /* overline */
+};
+
+/*
+#define cet_ucs4_to_ibm284_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm284_extra[cet_ucs4_to_ibm284_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm284 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm284,             /* name of character set        */
+       cet_cs_alias_ibm284,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm284,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm284,            /* first non standard character */
+       cet_ucs4_cnt_ibm284,            /* number of values in table    */
+
+       cet_ucs4_to_ibm284_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm284_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm284_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 
+       0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 
+       0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 
+       0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 
+       0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 
+       0x00e7, 0x00a6, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 
+       0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 
+       0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 
+       0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 
+       0x00c7, 0x0023, 0x00f1, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 
+       0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 
+       0x00cc, 0x0060, 0x003a, 0x00d1, 0x0040, 0x0027, 0x003d, 0x0022, 
+       0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 
+       0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 
+       0x00b5, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 
+       0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 
+       0x00bd, 0x00be, 0x005e, 0x0021, 0x203e, 0x007e, 0x00b4, 0x00d7, 
+       0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 
+       0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 
+       0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm285.h b/gpsbabel/cet/ibm285.h
new file mode 100644 (file)
index 0000000..3c63f68
--- /dev/null
@@ -0,0 +1,381 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM285" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm285_h
+#define ibm285_h
+
+#define cet_cs_name_ibm285 "IBM285"
+
+const char *cet_cs_alias_ibm285[] = 
+{
+       "IBM285/CR-LF", "285/CR-LF", "CP285/CR-LF", "ebcdic-cp-gb",
+       NULL
+};
+
+#define cet_ucs4_ofs_ibm285 4
+#define cet_ucs4_cnt_ibm285 252
+
+const int cet_ucs4_map_ibm285[cet_ucs4_cnt_ibm285] =
+{
+       0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 
+       0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 
+       0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 
+       0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 
+       0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x0024, 0x002e, 
+       0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 
+       0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x0021, 0x00a3, 
+       0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x00c2, 0x00c4, 
+       0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 
+       0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 
+       0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 
+       0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 
+       0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 
+       0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x203e, 0x0073, 0x0074, 
+       0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 
+       0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x005b, 0x00a5, 0x00b7, 
+       0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005e, 0x005d, 
+       0x007e, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 
+       0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 
+       0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 
+       0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 
+       0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 
+       0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 
+       0x00dc, 0x00d9, 0x00da, 0x009f
+};
+
+#define cet_ucs4_to_ibm285_ct 236
+
+const cet_ucs4_link_t cet_ucs4_to_ibm285_links[cet_ucs4_to_ibm285_ct] =
+{
+        {0x0004, 0x37} /* of transmission (eot) */,
+        {0x0005, 0x2d} /* (enq) */,
+        {0x0006, 0x2e} /* (ack) */,
+        {0x0007, 0x2f} /* (bel) */,
+        {0x0008, 0x16} /* (bs) */,
+        {0x0009, 0x05} /* tabulation (ht) */,
+        {0x000a, 0x25} /* feed (lf) */,
+        {0x0014, 0x3c} /* control four (dc4) */,
+        {0x0015, 0x3d} /* acknowledge (nak) */,
+        {0x0016, 0x32} /* idle (syn) */,
+        {0x0017, 0x26} /* of transmission block (etb) */,
+        {0x001a, 0x3f} /* (sub) */,
+        {0x001b, 0x27} /* (esc) */,
+        {0x0020, 0x40} /* space */,
+        {0x0021, 0x5a} /* mark */,
+        {0x0022, 0x7f} /* mark */,
+        {0x0023, 0x7b} /* sign */,
+        {0x0024, 0x4a} /* sign */,
+        {0x0025, 0x6c} /* sign */,
+        {0x0026, 0x50} /* ampersand */,
+        {0x0027, 0x7d} /* apostrophe */,
+        {0x0028, 0x4d} /* parenthesis */,
+        {0x0029, 0x5d} /* parenthesis */,
+        {0x002a, 0x5c} /* asterisk */,
+        {0x002b, 0x4e} /* sign */,
+        {0x002c, 0x6b} /* comma */,
+        {0x002d, 0x60} /* hyphen-minus */,
+        {0x002e, 0x4b} /* stop */,
+        {0x002f, 0x61} /* solidus */,
+        {0x0030, 0xf0} /* zero */,
+        {0x0031, 0xf1} /* one */,
+        {0x0032, 0xf2} /* two */,
+        {0x0033, 0xf3} /* three */,
+        {0x0034, 0xf4} /* four */,
+        {0x0035, 0xf5} /* five */,
+        {0x0036, 0xf6} /* six */,
+        {0x0037, 0xf7} /* seven */,
+        {0x0038, 0xf8} /* eight */,
+        {0x0039, 0xf9} /* nine */,
+        {0x003a, 0x7a} /* colon */,
+        {0x003b, 0x5e} /* semicolon */,
+        {0x003c, 0x4c} /* sign */,
+        {0x003d, 0x7e} /* sign */,
+        {0x003e, 0x6e} /* sign */,
+        {0x003f, 0x6f} /* mark */,
+        {0x0040, 0x7c} /* at */,
+        {0x0041, 0xc1} /* capital letter a */,
+        {0x0042, 0xc2} /* capital letter b */,
+        {0x0043, 0xc3} /* capital letter c */,
+        {0x0044, 0xc4} /* capital letter d */,
+        {0x0045, 0xc5} /* capital letter e */,
+        {0x0046, 0xc6} /* capital letter f */,
+        {0x0047, 0xc7} /* capital letter g */,
+        {0x0048, 0xc8} /* capital letter h */,
+        {0x0049, 0xc9} /* capital letter i */,
+        {0x004a, 0xd1} /* capital letter j */,
+        {0x004b, 0xd2} /* capital letter k */,
+        {0x004c, 0xd3} /* capital letter l */,
+        {0x004d, 0xd4} /* capital letter m */,
+        {0x004e, 0xd5} /* capital letter n */,
+        {0x004f, 0xd6} /* capital letter o */,
+        {0x0050, 0xd7} /* capital letter p */,
+        {0x0051, 0xd8} /* capital letter q */,
+        {0x0052, 0xd9} /* capital letter r */,
+        {0x0053, 0xe2} /* capital letter s */,
+        {0x0054, 0xe3} /* capital letter t */,
+        {0x0055, 0xe4} /* capital letter u */,
+        {0x0056, 0xe5} /* capital letter v */,
+        {0x0057, 0xe6} /* capital letter w */,
+        {0x0058, 0xe7} /* capital letter x */,
+        {0x0059, 0xe8} /* capital letter y */,
+        {0x005a, 0xe9} /* capital letter z */,
+        {0x005b, 0xb1} /* square bracket */,
+        {0x005c, 0xe0} /* solidus */,
+        {0x005d, 0xbb} /* square bracket */,
+        {0x005e, 0xba} /* accent */,
+        {0x005f, 0x6d} /* line */,
+        {0x0060, 0x79} /* accent */,
+        {0x0061, 0x81} /* small letter a */,
+        {0x0062, 0x82} /* small letter b */,
+        {0x0063, 0x83} /* small letter c */,
+        {0x0064, 0x84} /* small letter d */,
+        {0x0065, 0x85} /* small letter e */,
+        {0x0066, 0x86} /* small letter f */,
+        {0x0067, 0x87} /* small letter g */,
+        {0x0068, 0x88} /* small letter h */,
+        {0x0069, 0x89} /* small letter i */,
+        {0x006a, 0x91} /* small letter j */,
+        {0x006b, 0x92} /* small letter k */,
+        {0x006c, 0x93} /* small letter l */,
+        {0x006d, 0x94} /* small letter m */,
+        {0x006e, 0x95} /* small letter n */,
+        {0x006f, 0x96} /* small letter o */,
+        {0x0070, 0x97} /* small letter p */,
+        {0x0071, 0x98} /* small letter q */,
+        {0x0072, 0x99} /* small letter r */,
+        {0x0073, 0xa2} /* small letter s */,
+        {0x0074, 0xa3} /* small letter t */,
+        {0x0075, 0xa4} /* small letter u */,
+        {0x0076, 0xa5} /* small letter v */,
+        {0x0077, 0xa6} /* small letter w */,
+        {0x0078, 0xa7} /* small letter x */,
+        {0x0079, 0xa8} /* small letter y */,
+        {0x007a, 0xa9} /* small letter z */,
+        {0x007b, 0xc0} /* curly bracket */,
+        {0x007c, 0x4f} /* line */,
+        {0x007d, 0xd0} /* curly bracket */,
+        {0x007e, 0xbc} /* tilde */,
+        {0x007f, 0x07} /* (del) */,
+        {0x0080, 0x20} /* character (pad) */,
+        {0x0081, 0x21} /* octet preset (hop) */,
+        {0x0082, 0x22} /* permitted here (bph) */,
+        {0x0083, 0x23} /* break here (nbh) */,
+        {0x0084, 0x24} /* (ind) */,
+        {0x0085, 0x15} /* line (nel) */,
+        {0x0086, 0x06} /* of selected area (ssa) */,
+        {0x0087, 0x17} /* of selected area (esa) */,
+        {0x0088, 0x28} /* tabulation set (hts) */,
+        {0x0089, 0x29} /* tabulation with justification (htj) */,
+        {0x008a, 0x2a} /* tabulation set (vts) */,
+        {0x008b, 0x2b} /* line forward (pld) */,
+        {0x008c, 0x2c} /* line backward (plu) */,
+        {0x008d, 0x09} /* line feed (ri) */,
+        {0x008e, 0x0a} /* two (ss2) */,
+        {0x008f, 0x1b} /* three (ss3) */,
+        {0x0090, 0x30} /* control string (dcs) */,
+        {0x0091, 0x31} /* use one (pu1) */,
+        {0x0092, 0x1a} /* use two (pu2) */,
+        {0x0093, 0x33} /* transmit state (sts) */,
+        {0x0094, 0x34} /* character (cch) */,
+        {0x0095, 0x35} /* waiting (mw) */,
+        {0x0096, 0x36} /* of guarded area (spa) */,
+        {0x0097, 0x08} /* of guarded area (epa) */,
+        {0x0098, 0x38} /* of string (sos) */,
+        {0x0099, 0x39} /* graphic character introducer (sgci) */,
+        {0x009a, 0x3a} /* character introducer (sci) */,
+        {0x009b, 0x3b} /* sequence introducer (csi) */,
+        {0x009c, 0x04} /* terminator (st) */,
+        {0x009d, 0x14} /* system command (osc) */,
+        {0x009e, 0x3e} /* message (pm) */,
+        {0x009f, 0xff} /* program command (apc) */,
+        {0x00a0, 0x41} /* space */,
+        {0x00a1, 0xaa} /* exclamation mark */,
+        {0x00a2, 0xb0} /* sign */,
+        {0x00a3, 0x5b} /* sign */,
+        {0x00a4, 0x9f} /* sign */,
+        {0x00a5, 0xb2} /* sign */,
+        {0x00a6, 0x6a} /* bar */,
+        {0x00a7, 0xb5} /* sign */,
+        {0x00a8, 0xbd} /* diaeresis */,
+        {0x00a9, 0xb4} /* sign */,
+        {0x00aa, 0x9a} /* ordinal indicator */,
+        {0x00ab, 0x8a} /* double angle quotation mark */,
+        {0x00ac, 0x5f} /* sign */,
+        {0x00ad, 0xca} /* hyphen */,
+        {0x00ae, 0xaf} /* sign */,
+        {0x00b0, 0x90} /* sign */,
+        {0x00b1, 0x8f} /* sign */,
+        {0x00b2, 0xea} /* two */,
+        {0x00b3, 0xfa} /* three */,
+        {0x00b4, 0xbe} /* accent */,
+        {0x00b5, 0xa0} /* sign */,
+        {0x00b7, 0xb3} /* dot */,
+        {0x00b8, 0x9d} /* cedilla */,
+        {0x00b9, 0xda} /* one */,
+        {0x00ba, 0x9b} /* ordinal indicator */,
+        {0x00bb, 0x8b} /* double angle quotation mark */,
+        {0x00bc, 0xb7} /* fraction one quarter */,
+        {0x00bd, 0xb8} /* fraction one half */,
+        {0x00be, 0xb9} /* fraction three quarters */,
+        {0x00bf, 0xab} /* question mark */,
+        {0x00c0, 0x64} /* capital letter a with grave */,
+        {0x00c1, 0x65} /* capital letter a with acute */,
+        {0x00c2, 0x62} /* capital letter a with circumflex */,
+        {0x00c3, 0x66} /* capital letter a with tilde */,
+        {0x00c4, 0x63} /* capital letter a with diaeresis */,
+        {0x00c5, 0x67} /* capital letter a with ring above */,
+        {0x00c6, 0x9e} /* capital letter ae */,
+        {0x00c7, 0x68} /* capital letter c with cedilla */,
+        {0x00c8, 0x74} /* capital letter e with grave */,
+        {0x00c9, 0x71} /* capital letter e with acute */,
+        {0x00ca, 0x72} /* capital letter e with circumflex */,
+        {0x00cb, 0x73} /* capital letter e with diaeresis */,
+        {0x00cc, 0x78} /* capital letter i with grave */,
+        {0x00cd, 0x75} /* capital letter i with acute */,
+        {0x00ce, 0x76} /* capital letter i with circumflex */,
+        {0x00cf, 0x77} /* capital letter i with diaeresis */,
+        {0x00d0, 0xac} /* capital letter eth (icelandic) */,
+        {0x00d1, 0x69} /* capital letter n with tilde */,
+        {0x00d2, 0xed} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xeb} /* capital letter o with circumflex */,
+        {0x00d5, 0xef} /* capital letter o with tilde */,
+        {0x00d6, 0xec} /* capital letter o with diaeresis */,
+        {0x00d7, 0xbf} /* sign */,
+        {0x00d8, 0x80} /* capital letter o with stroke */,
+        {0x00d9, 0xfd} /* capital letter u with grave */,
+        {0x00da, 0xfe} /* capital letter u with acute */,
+        {0x00db, 0xfb} /* capital letter u with circumflex */,
+        {0x00dc, 0xfc} /* capital letter u with diaeresis */,
+        {0x00dd, 0xad} /* capital letter y with acute */,
+        {0x00de, 0xae} /* capital letter thorn (icelandic) */,
+        {0x00df, 0x59} /* small letter sharp s (german) */,
+        {0x00e0, 0x44} /* small letter a with grave */,
+        {0x00e1, 0x45} /* small letter a with acute */,
+        {0x00e2, 0x42} /* small letter a with circumflex */,
+        {0x00e3, 0x46} /* small letter a with tilde */,
+        {0x00e4, 0x43} /* small letter a with diaeresis */,
+        {0x00e5, 0x47} /* small letter a with ring above */,
+        {0x00e6, 0x9c} /* small letter ae */,
+        {0x00e7, 0x48} /* small letter c with cedilla */,
+        {0x00e8, 0x54} /* small letter e with grave */,
+        {0x00e9, 0x51} /* small letter e with acute */,
+        {0x00ea, 0x52} /* small letter e with circumflex */,
+        {0x00eb, 0x53} /* small letter e with diaeresis */,
+        {0x00ec, 0x58} /* small letter i with grave */,
+        {0x00ed, 0x55} /* small letter i with acute */,
+        {0x00ee, 0x56} /* small letter i with circumflex */,
+        {0x00ef, 0x57} /* small letter i with diaeresis */,
+        {0x00f0, 0x8c} /* small letter eth (icelandic) */,
+        {0x00f1, 0x49} /* small letter n with tilde */,
+        {0x00f2, 0xcd} /* small letter o with grave */,
+        {0x00f3, 0xce} /* small letter o with acute */,
+        {0x00f4, 0xcb} /* small letter o with circumflex */,
+        {0x00f5, 0xcf} /* small letter o with tilde */,
+        {0x00f6, 0xcc} /* small letter o with diaeresis */,
+        {0x00f7, 0xe1} /* sign */,
+        {0x00f8, 0x70} /* small letter o with stroke */,
+        {0x00f9, 0xdd} /* small letter u with grave */,
+        {0x00fa, 0xde} /* small letter u with acute */,
+        {0x00fb, 0xdb} /* small letter u with circumflex */,
+        {0x00fc, 0xdc} /* small letter u with diaeresis */,
+        {0x00fd, 0x8d} /* small letter y with acute */,
+        {0x00fe, 0x8e} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xdf} /* small letter y with diaeresis */,
+        {0x203e, 0xa1} /* overline */
+};
+
+/*
+#define cet_ucs4_to_ibm285_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm285_extra[cet_ucs4_to_ibm285_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm285 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm285,             /* name of character set        */
+       cet_cs_alias_ibm285,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm285,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm285,            /* first non standard character */
+       cet_ucs4_cnt_ibm285,            /* number of values in table    */
+
+       cet_ucs4_to_ibm285_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm285_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm285_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 
+       0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 
+       0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 
+       0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 
+       0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 
+       0x00e7, 0x00f1, 0x0024, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 
+       0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 
+       0x00ec, 0x00df, 0x0021, 0x00a3, 0x002a, 0x0029, 0x003b, 0x00ac, 
+       0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 
+       0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 
+       0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 
+       0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 
+       0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 
+       0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 
+       0x00b5, 0x203e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 
+       0x00a2, 0x005b, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 
+       0x00bd, 0x00be, 0x005e, 0x005d, 0x007e, 0x00a8, 0x00b4, 0x00d7, 
+       0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 
+       0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 
+       0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm297.h b/gpsbabel/cet/ibm297.h
new file mode 100644 (file)
index 0000000..db48e9a
--- /dev/null
@@ -0,0 +1,381 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM297" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm297_h
+#define ibm297_h
+
+#define cet_cs_name_ibm297 "IBM297"
+
+const char *cet_cs_alias_ibm297[] = 
+{
+       "IBM297/CR-LF", "297/CR-LF", "CP297/CR-LF", "ebcdic-cp-fr",
+       NULL
+};
+
+#define cet_ucs4_ofs_ibm297 4
+#define cet_ucs4_cnt_ibm297 252
+
+const int cet_ucs4_map_ibm297[cet_ucs4_cnt_ibm297] =
+{
+       0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 
+       0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 
+       0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 
+       0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 
+       0x0040, 0x00e1, 0x00e3, 0x00e5, 0x005c, 0x00f1, 0x00b0, 0x002e, 
+       0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x007b, 0x00ea, 0x00eb, 
+       0x007d, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00a7, 0x0024, 
+       0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 
+       0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00f9, 0x002c, 
+       0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00b5, 0x003a, 0x00a3, 
+       0x00e0, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 
+       0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x005b, 0x006a, 0x006b, 0x006c, 
+       0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 
+       0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x0060, 0x00a8, 0x0073, 0x0074, 
+       0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 
+       0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x0023, 0x00a5, 0x00b7, 
+       0x00a9, 0x005d, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 
+       0x203e, 0x007e, 0x00b4, 0x00d7, 0x00e9, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 
+       0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x00e8, 0x004a, 0x004b, 0x004c, 
+       0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 
+       0x00fc, 0x00a6, 0x00fa, 0x00ff, 0x00e7, 0x00f7, 0x0053, 0x0054, 
+       0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 
+       0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 
+       0x00dc, 0x00d9, 0x00da, 0x009f
+};
+
+#define cet_ucs4_to_ibm297_ct 236
+
+const cet_ucs4_link_t cet_ucs4_to_ibm297_links[cet_ucs4_to_ibm297_ct] =
+{
+        {0x0004, 0x37} /* of transmission (eot) */,
+        {0x0005, 0x2d} /* (enq) */,
+        {0x0006, 0x2e} /* (ack) */,
+        {0x0007, 0x2f} /* (bel) */,
+        {0x0008, 0x16} /* (bs) */,
+        {0x0009, 0x05} /* tabulation (ht) */,
+        {0x000a, 0x25} /* feed (lf) */,
+        {0x0014, 0x3c} /* control four (dc4) */,
+        {0x0015, 0x3d} /* acknowledge (nak) */,
+        {0x0016, 0x32} /* idle (syn) */,
+        {0x0017, 0x26} /* of transmission block (etb) */,
+        {0x001a, 0x3f} /* (sub) */,
+        {0x001b, 0x27} /* (esc) */,
+        {0x0020, 0x40} /* space */,
+        {0x0021, 0x4f} /* mark */,
+        {0x0022, 0x7f} /* mark */,
+        {0x0023, 0xb1} /* sign */,
+        {0x0024, 0x5b} /* sign */,
+        {0x0025, 0x6c} /* sign */,
+        {0x0026, 0x50} /* ampersand */,
+        {0x0027, 0x7d} /* apostrophe */,
+        {0x0028, 0x4d} /* parenthesis */,
+        {0x0029, 0x5d} /* parenthesis */,
+        {0x002a, 0x5c} /* asterisk */,
+        {0x002b, 0x4e} /* sign */,
+        {0x002c, 0x6b} /* comma */,
+        {0x002d, 0x60} /* hyphen-minus */,
+        {0x002e, 0x4b} /* stop */,
+        {0x002f, 0x61} /* solidus */,
+        {0x0030, 0xf0} /* zero */,
+        {0x0031, 0xf1} /* one */,
+        {0x0032, 0xf2} /* two */,
+        {0x0033, 0xf3} /* three */,
+        {0x0034, 0xf4} /* four */,
+        {0x0035, 0xf5} /* five */,
+        {0x0036, 0xf6} /* six */,
+        {0x0037, 0xf7} /* seven */,
+        {0x0038, 0xf8} /* eight */,
+        {0x0039, 0xf9} /* nine */,
+        {0x003a, 0x7a} /* colon */,
+        {0x003b, 0x5e} /* semicolon */,
+        {0x003c, 0x4c} /* sign */,
+        {0x003d, 0x7e} /* sign */,
+        {0x003e, 0x6e} /* sign */,
+        {0x003f, 0x6f} /* mark */,
+        {0x0040, 0x44} /* at */,
+        {0x0041, 0xc1} /* capital letter a */,
+        {0x0042, 0xc2} /* capital letter b */,
+        {0x0043, 0xc3} /* capital letter c */,
+        {0x0044, 0xc4} /* capital letter d */,
+        {0x0045, 0xc5} /* capital letter e */,
+        {0x0046, 0xc6} /* capital letter f */,
+        {0x0047, 0xc7} /* capital letter g */,
+        {0x0048, 0xc8} /* capital letter h */,
+        {0x0049, 0xc9} /* capital letter i */,
+        {0x004a, 0xd1} /* capital letter j */,
+        {0x004b, 0xd2} /* capital letter k */,
+        {0x004c, 0xd3} /* capital letter l */,
+        {0x004d, 0xd4} /* capital letter m */,
+        {0x004e, 0xd5} /* capital letter n */,
+        {0x004f, 0xd6} /* capital letter o */,
+        {0x0050, 0xd7} /* capital letter p */,
+        {0x0051, 0xd8} /* capital letter q */,
+        {0x0052, 0xd9} /* capital letter r */,
+        {0x0053, 0xe2} /* capital letter s */,
+        {0x0054, 0xe3} /* capital letter t */,
+        {0x0055, 0xe4} /* capital letter u */,
+        {0x0056, 0xe5} /* capital letter v */,
+        {0x0057, 0xe6} /* capital letter w */,
+        {0x0058, 0xe7} /* capital letter x */,
+        {0x0059, 0xe8} /* capital letter y */,
+        {0x005a, 0xe9} /* capital letter z */,
+        {0x005b, 0x90} /* square bracket */,
+        {0x005c, 0x48} /* solidus */,
+        {0x005d, 0xb5} /* square bracket */,
+        {0x005e, 0x5f} /* accent */,
+        {0x005f, 0x6d} /* line */,
+        {0x0060, 0xa0} /* accent */,
+        {0x0061, 0x81} /* small letter a */,
+        {0x0062, 0x82} /* small letter b */,
+        {0x0063, 0x83} /* small letter c */,
+        {0x0064, 0x84} /* small letter d */,
+        {0x0065, 0x85} /* small letter e */,
+        {0x0066, 0x86} /* small letter f */,
+        {0x0067, 0x87} /* small letter g */,
+        {0x0068, 0x88} /* small letter h */,
+        {0x0069, 0x89} /* small letter i */,
+        {0x006a, 0x91} /* small letter j */,
+        {0x006b, 0x92} /* small letter k */,
+        {0x006c, 0x93} /* small letter l */,
+        {0x006d, 0x94} /* small letter m */,
+        {0x006e, 0x95} /* small letter n */,
+        {0x006f, 0x96} /* small letter o */,
+        {0x0070, 0x97} /* small letter p */,
+        {0x0071, 0x98} /* small letter q */,
+        {0x0072, 0x99} /* small letter r */,
+        {0x0073, 0xa2} /* small letter s */,
+        {0x0074, 0xa3} /* small letter t */,
+        {0x0075, 0xa4} /* small letter u */,
+        {0x0076, 0xa5} /* small letter v */,
+        {0x0077, 0xa6} /* small letter w */,
+        {0x0078, 0xa7} /* small letter x */,
+        {0x0079, 0xa8} /* small letter y */,
+        {0x007a, 0xa9} /* small letter z */,
+        {0x007b, 0x51} /* curly bracket */,
+        {0x007c, 0xbb} /* line */,
+        {0x007d, 0x54} /* curly bracket */,
+        {0x007e, 0xbd} /* tilde */,
+        {0x007f, 0x07} /* (del) */,
+        {0x0080, 0x20} /* character (pad) */,
+        {0x0081, 0x21} /* octet preset (hop) */,
+        {0x0082, 0x22} /* permitted here (bph) */,
+        {0x0083, 0x23} /* break here (nbh) */,
+        {0x0084, 0x24} /* (ind) */,
+        {0x0085, 0x15} /* line (nel) */,
+        {0x0086, 0x06} /* of selected area (ssa) */,
+        {0x0087, 0x17} /* of selected area (esa) */,
+        {0x0088, 0x28} /* tabulation set (hts) */,
+        {0x0089, 0x29} /* tabulation with justification (htj) */,
+        {0x008a, 0x2a} /* tabulation set (vts) */,
+        {0x008b, 0x2b} /* line forward (pld) */,
+        {0x008c, 0x2c} /* line backward (plu) */,
+        {0x008d, 0x09} /* line feed (ri) */,
+        {0x008e, 0x0a} /* two (ss2) */,
+        {0x008f, 0x1b} /* three (ss3) */,
+        {0x0090, 0x30} /* control string (dcs) */,
+        {0x0091, 0x31} /* use one (pu1) */,
+        {0x0092, 0x1a} /* use two (pu2) */,
+        {0x0093, 0x33} /* transmit state (sts) */,
+        {0x0094, 0x34} /* character (cch) */,
+        {0x0095, 0x35} /* waiting (mw) */,
+        {0x0096, 0x36} /* of guarded area (spa) */,
+        {0x0097, 0x08} /* of guarded area (epa) */,
+        {0x0098, 0x38} /* of string (sos) */,
+        {0x0099, 0x39} /* graphic character introducer (sgci) */,
+        {0x009a, 0x3a} /* character introducer (sci) */,
+        {0x009b, 0x3b} /* sequence introducer (csi) */,
+        {0x009c, 0x04} /* terminator (st) */,
+        {0x009d, 0x14} /* system command (osc) */,
+        {0x009e, 0x3e} /* message (pm) */,
+        {0x009f, 0xff} /* program command (apc) */,
+        {0x00a0, 0x41} /* space */,
+        {0x00a1, 0xaa} /* exclamation mark */,
+        {0x00a2, 0xb0} /* sign */,
+        {0x00a3, 0x7b} /* sign */,
+        {0x00a4, 0x9f} /* sign */,
+        {0x00a5, 0xb2} /* sign */,
+        {0x00a6, 0xdd} /* bar */,
+        {0x00a7, 0x5a} /* sign */,
+        {0x00a8, 0xa1} /* diaeresis */,
+        {0x00a9, 0xb4} /* sign */,
+        {0x00aa, 0x9a} /* ordinal indicator */,
+        {0x00ab, 0x8a} /* double angle quotation mark */,
+        {0x00ac, 0xba} /* sign */,
+        {0x00ad, 0xca} /* hyphen */,
+        {0x00ae, 0xaf} /* sign */,
+        {0x00b0, 0x4a} /* sign */,
+        {0x00b1, 0x8f} /* sign */,
+        {0x00b2, 0xea} /* two */,
+        {0x00b3, 0xfa} /* three */,
+        {0x00b4, 0xbe} /* accent */,
+        {0x00b5, 0x79} /* sign */,
+        {0x00b7, 0xb3} /* dot */,
+        {0x00b8, 0x9d} /* cedilla */,
+        {0x00b9, 0xda} /* one */,
+        {0x00ba, 0x9b} /* ordinal indicator */,
+        {0x00bb, 0x8b} /* double angle quotation mark */,
+        {0x00bc, 0xb7} /* fraction one quarter */,
+        {0x00bd, 0xb8} /* fraction one half */,
+        {0x00be, 0xb9} /* fraction three quarters */,
+        {0x00bf, 0xab} /* question mark */,
+        {0x00c0, 0x64} /* capital letter a with grave */,
+        {0x00c1, 0x65} /* capital letter a with acute */,
+        {0x00c2, 0x62} /* capital letter a with circumflex */,
+        {0x00c3, 0x66} /* capital letter a with tilde */,
+        {0x00c4, 0x63} /* capital letter a with diaeresis */,
+        {0x00c5, 0x67} /* capital letter a with ring above */,
+        {0x00c6, 0x9e} /* capital letter ae */,
+        {0x00c7, 0x68} /* capital letter c with cedilla */,
+        {0x00c8, 0x74} /* capital letter e with grave */,
+        {0x00c9, 0x71} /* capital letter e with acute */,
+        {0x00ca, 0x72} /* capital letter e with circumflex */,
+        {0x00cb, 0x73} /* capital letter e with diaeresis */,
+        {0x00cc, 0x78} /* capital letter i with grave */,
+        {0x00cd, 0x75} /* capital letter i with acute */,
+        {0x00ce, 0x76} /* capital letter i with circumflex */,
+        {0x00cf, 0x77} /* capital letter i with diaeresis */,
+        {0x00d0, 0xac} /* capital letter eth (icelandic) */,
+        {0x00d1, 0x69} /* capital letter n with tilde */,
+        {0x00d2, 0xed} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xeb} /* capital letter o with circumflex */,
+        {0x00d5, 0xef} /* capital letter o with tilde */,
+        {0x00d6, 0xec} /* capital letter o with diaeresis */,
+        {0x00d7, 0xbf} /* sign */,
+        {0x00d8, 0x80} /* capital letter o with stroke */,
+        {0x00d9, 0xfd} /* capital letter u with grave */,
+        {0x00da, 0xfe} /* capital letter u with acute */,
+        {0x00db, 0xfb} /* capital letter u with circumflex */,
+        {0x00dc, 0xfc} /* capital letter u with diaeresis */,
+        {0x00dd, 0xad} /* capital letter y with acute */,
+        {0x00de, 0xae} /* capital letter thorn (icelandic) */,
+        {0x00df, 0x59} /* small letter sharp s (german) */,
+        {0x00e0, 0x7c} /* small letter a with grave */,
+        {0x00e1, 0x45} /* small letter a with acute */,
+        {0x00e2, 0x42} /* small letter a with circumflex */,
+        {0x00e3, 0x46} /* small letter a with tilde */,
+        {0x00e4, 0x43} /* small letter a with diaeresis */,
+        {0x00e5, 0x47} /* small letter a with ring above */,
+        {0x00e6, 0x9c} /* small letter ae */,
+        {0x00e7, 0xe0} /* small letter c with cedilla */,
+        {0x00e8, 0xd0} /* small letter e with grave */,
+        {0x00e9, 0xc0} /* small letter e with acute */,
+        {0x00ea, 0x52} /* small letter e with circumflex */,
+        {0x00eb, 0x53} /* small letter e with diaeresis */,
+        {0x00ec, 0x58} /* small letter i with grave */,
+        {0x00ed, 0x55} /* small letter i with acute */,
+        {0x00ee, 0x56} /* small letter i with circumflex */,
+        {0x00ef, 0x57} /* small letter i with diaeresis */,
+        {0x00f0, 0x8c} /* small letter eth (icelandic) */,
+        {0x00f1, 0x49} /* small letter n with tilde */,
+        {0x00f2, 0xcd} /* small letter o with grave */,
+        {0x00f3, 0xce} /* small letter o with acute */,
+        {0x00f4, 0xcb} /* small letter o with circumflex */,
+        {0x00f5, 0xcf} /* small letter o with tilde */,
+        {0x00f6, 0xcc} /* small letter o with diaeresis */,
+        {0x00f7, 0xe1} /* sign */,
+        {0x00f8, 0x70} /* small letter o with stroke */,
+        {0x00f9, 0x6a} /* small letter u with grave */,
+        {0x00fa, 0xde} /* small letter u with acute */,
+        {0x00fb, 0xdb} /* small letter u with circumflex */,
+        {0x00fc, 0xdc} /* small letter u with diaeresis */,
+        {0x00fd, 0x8d} /* small letter y with acute */,
+        {0x00fe, 0x8e} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xdf} /* small letter y with diaeresis */,
+        {0x203e, 0xbc} /* overline */
+};
+
+/*
+#define cet_ucs4_to_ibm297_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm297_extra[cet_ucs4_to_ibm297_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm297 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm297,             /* name of character set        */
+       cet_cs_alias_ibm297,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm297,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm297,            /* first non standard character */
+       cet_ucs4_cnt_ibm297,            /* number of values in table    */
+
+       cet_ucs4_to_ibm297_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm297_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm297_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 
+       0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 
+       0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 
+       0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 
+       0x0020, 0x00a0, 0x00e2, 0x00e4, 0x0040, 0x00e1, 0x00e3, 0x00e5, 
+       0x005c, 0x00f1, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 
+       0x0026, 0x007b, 0x00ea, 0x00eb, 0x007d, 0x00ed, 0x00ee, 0x00ef, 
+       0x00ec, 0x00df, 0x00a7, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 
+       0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 
+       0x00c7, 0x00d1, 0x00f9, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 
+       0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 
+       0x00cc, 0x00b5, 0x003a, 0x00a3, 0x00e0, 0x0027, 0x003d, 0x0022, 
+       0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 
+       0x005b, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 
+       0x0060, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 
+       0x00a2, 0x0023, 0x00a5, 0x00b7, 0x00a9, 0x005d, 0x00b6, 0x00bc, 
+       0x00bd, 0x00be, 0x00ac, 0x007c, 0x203e, 0x007e, 0x00b4, 0x00d7, 
+       0x00e9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 
+       0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00a6, 0x00fa, 0x00ff, 
+       0x00e7, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm437.h b/gpsbabel/cet/ibm437.h
new file mode 100644 (file)
index 0000000..173828c
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM437" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm437_h
+#define ibm437_h
+
+#define cet_cs_name_ibm437 "IBM437"
+
+const char *cet_cs_alias_ibm437[] = 
+{
+       "IBM437/CR-LF", "437/CR-LF", "CP437/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm437 128
+#define cet_ucs4_cnt_ibm437 128
+
+const int cet_ucs4_map_ibm437[cet_ucs4_cnt_ibm437] =
+{
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, 
+       0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 
+       0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 
+       0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x00b0, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm437_ct 128
+
+const cet_ucs4_link_t cet_ucs4_to_ibm437_links[cet_ucs4_to_ibm437_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a1, 0xad} /* exclamation mark */,
+        {0x00a2, 0x9b} /* sign */,
+        {0x00a3, 0x9c} /* sign */,
+        {0x00a5, 0x9d} /* sign */,
+        {0x00aa, 0xa6} /* ordinal indicator */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ac, 0xaa} /* sign */,
+        {0x00b0, 0xf8} /* sign */,
+        {0x00b1, 0xf1} /* sign */,
+        {0x00b2, 0xfd} /* two */,
+        {0x00b5, 0xe6} /* sign */,
+        {0x00b7, 0xf9} /* dot */,
+        {0x00ba, 0xa7} /* ordinal indicator */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00bc, 0xac} /* fraction one quarter */,
+        {0x00bd, 0xab} /* fraction one half */,
+        {0x00bf, 0xa8} /* question mark */,
+        {0x00c4, 0x8e} /* capital letter a with diaeresis */,
+        {0x00c5, 0x8f} /* capital letter a with ring above */,
+        {0x00c6, 0x92} /* capital letter ae */,
+        {0x00c7, 0x80} /* capital letter c with cedilla */,
+        {0x00c9, 0x90} /* capital letter e with acute */,
+        {0x00d1, 0xa5} /* capital letter n with tilde */,
+        {0x00d6, 0x99} /* capital letter o with diaeresis */,
+        {0x00dc, 0x9a} /* capital letter u with diaeresis */,
+        {0x00df, 0xe1} /* small letter sharp s (german) */,
+        {0x00e0, 0x85} /* small letter a with grave */,
+        {0x00e1, 0xa0} /* small letter a with acute */,
+        {0x00e2, 0x83} /* small letter a with circumflex */,
+        {0x00e4, 0x84} /* small letter a with diaeresis */,
+        {0x00e5, 0x86} /* small letter a with ring above */,
+        {0x00e6, 0x91} /* small letter ae */,
+        {0x00e7, 0x87} /* small letter c with cedilla */,
+        {0x00e8, 0x8a} /* small letter e with grave */,
+        {0x00e9, 0x82} /* small letter e with acute */,
+        {0x00ea, 0x88} /* small letter e with circumflex */,
+        {0x00eb, 0x89} /* small letter e with diaeresis */,
+        {0x00ec, 0x8d} /* small letter i with grave */,
+        {0x00ed, 0xa1} /* small letter i with acute */,
+        {0x00ee, 0x8c} /* small letter i with circumflex */,
+        {0x00ef, 0x8b} /* small letter i with diaeresis */,
+        {0x00f1, 0xa4} /* small letter n with tilde */,
+        {0x00f2, 0x95} /* small letter o with grave */,
+        {0x00f3, 0xa2} /* small letter o with acute */,
+        {0x00f4, 0x93} /* small letter o with circumflex */,
+        {0x00f6, 0x94} /* small letter o with diaeresis */,
+        {0x00f7, 0xf6} /* sign */,
+        {0x00f9, 0x97} /* small letter u with grave */,
+        {0x00fa, 0xa3} /* small letter u with acute */,
+        {0x00fb, 0x96} /* small letter u with circumflex */,
+        {0x00fc, 0x81} /* small letter u with diaeresis */,
+        {0x00ff, 0x98} /* small letter y with diaeresis */,
+        {0x0192, 0x9f} /* minuscule latine f hameçon */,
+        {0x0393, 0xe2} /* capital letter gamma */,
+        {0x0398, 0xe9} /* capital letter theta */,
+        {0x03a3, 0xe4} /* capital letter sigma */,
+        {0x03a6, 0xe8} /* capital letter phi */,
+        {0x03a9, 0xea} /* capital letter omega */,
+        {0x03b1, 0xe0} /* small letter alpha */,
+        {0x03b4, 0xeb} /* small letter delta */,
+        {0x03b5, 0xee} /* small letter epsilon */,
+        {0x03c0, 0xe3} /* small letter pi */,
+        {0x03c3, 0xe5} /* small letter sigma */,
+        {0x03c4, 0xe7} /* small letter tau */,
+        {0x03c6, 0xed} /* small letter phi */,
+        {0x2022, 0xfa} /* puce */,
+        {0x207f, 0xfc} /* latin small letter n */,
+        {0x20a7, 0x9e} /* sign */,
+        {0x221a, 0xfb} /* root */,
+        {0x221e, 0xec} /* infinity */,
+        {0x2229, 0xef} /* intersection */,
+        {0x2248, 0xf7} /* equal to */,
+        {0x2261, 0xf0} /* to */,
+        {0x2264, 0xf3} /* or equal to */,
+        {0x2265, 0xf2} /* or equal to */,
+        {0x2310, 0xa9} /* not sign */,
+        {0x2320, 0xf4} /* half integral */,
+        {0x2321, 0xf5} /* half integral */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2552, 0xd5} /* drawings down light and right heavy */,
+        {0x2553, 0xd6} /* drawings down heavy and right light */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2555, 0xb8} /* drawings down light and left heavy */,
+        {0x2556, 0xb7} /* drawings down heavy and left light */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x2558, 0xd4} /* drawings up light and right heavy */,
+        {0x2559, 0xd3} /* drawings up heavy and right light */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255b, 0xbe} /* drawings up light and left heavy */,
+        {0x255c, 0xbd} /* drawings up heavy and left light */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x255e, 0xc6} /* drawings vertical light and right heavy */,
+        {0x255f, 0xc7} /* drawings vertical heavy and right light */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2561, 0xb5} /* drawings vertical light and left heavy */,
+        {0x2562, 0xb6} /* drawings vertical heavy and left light */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2564, 0xd1} /* drawings down light and horizontal heavy */,
+        {0x2565, 0xd2} /* drawings down heavy and horizontal light */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2567, 0xcf} /* drawings up light and horizontal heavy */,
+        {0x2568, 0xd0} /* drawings up heavy and horizontal light */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256a, 0xd8} /* drawings vertical light and horizontal heavy */,
+        {0x256b, 0xd7} /* drawings vertical heavy and horizontal light */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x258c, 0xdd} /* half block */,
+        {0x2590, 0xde} /* half block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */
+};
+
+/*
+#define cet_ucs4_to_ibm437_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm437_extra[cet_ucs4_to_ibm437_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm437 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm437,             /* name of character set        */
+       cet_cs_alias_ibm437,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm437,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm437,            /* first non standard character */
+       cet_ucs4_cnt_ibm437,            /* number of values in table    */
+
+       cet_ucs4_to_ibm437_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm437_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm437_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, 
+       0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 
+       0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 
+       0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x00b0, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm500.h b/gpsbabel/cet/ibm500.h
new file mode 100644 (file)
index 0000000..d023dd8
--- /dev/null
@@ -0,0 +1,381 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM500" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm500_h
+#define ibm500_h
+
+#define cet_cs_name_ibm500 "IBM500"
+
+const char *cet_cs_alias_ibm500[] = 
+{
+       "IBM500/CR-LF", "500/CR-LF", "500V1", "CP500/CR-LF", 
+       "ebcdic-cp-be", "ebcdic-cp-ch", NULL
+};
+
+#define cet_ucs4_ofs_ibm500 4
+#define cet_ucs4_cnt_ibm500 252
+
+const int cet_ucs4_map_ibm500[cet_ucs4_cnt_ibm500] =
+{
+       0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 
+       0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 
+       0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 
+       0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 
+       0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x005b, 0x002e, 
+       0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 
+       0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x005d, 0x0024, 
+       0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 
+       0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 
+       0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 
+       0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 
+       0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 
+       0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 
+       0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 
+       0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 
+       0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 
+       0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 
+       0x00af, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 
+       0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 
+       0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 
+       0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 
+       0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 
+       0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 
+       0x00dc, 0x00d9, 0x00da, 0x009f
+};
+
+#define cet_ucs4_to_ibm500_ct 236
+
+const cet_ucs4_link_t cet_ucs4_to_ibm500_links[cet_ucs4_to_ibm500_ct] =
+{
+        {0x0004, 0x37} /* of transmission (eot) */,
+        {0x0005, 0x2d} /* (enq) */,
+        {0x0006, 0x2e} /* (ack) */,
+        {0x0007, 0x2f} /* (bel) */,
+        {0x0008, 0x16} /* (bs) */,
+        {0x0009, 0x05} /* tabulation (ht) */,
+        {0x000a, 0x25} /* feed (lf) */,
+        {0x0014, 0x3c} /* control four (dc4) */,
+        {0x0015, 0x3d} /* acknowledge (nak) */,
+        {0x0016, 0x32} /* idle (syn) */,
+        {0x0017, 0x26} /* of transmission block (etb) */,
+        {0x001a, 0x3f} /* (sub) */,
+        {0x001b, 0x27} /* (esc) */,
+        {0x0020, 0x40} /* space */,
+        {0x0021, 0x4f} /* mark */,
+        {0x0022, 0x7f} /* mark */,
+        {0x0023, 0x7b} /* sign */,
+        {0x0024, 0x5b} /* sign */,
+        {0x0025, 0x6c} /* sign */,
+        {0x0026, 0x50} /* ampersand */,
+        {0x0027, 0x7d} /* apostrophe */,
+        {0x0028, 0x4d} /* parenthesis */,
+        {0x0029, 0x5d} /* parenthesis */,
+        {0x002a, 0x5c} /* asterisk */,
+        {0x002b, 0x4e} /* sign */,
+        {0x002c, 0x6b} /* comma */,
+        {0x002d, 0x60} /* hyphen-minus */,
+        {0x002e, 0x4b} /* stop */,
+        {0x002f, 0x61} /* solidus */,
+        {0x0030, 0xf0} /* zero */,
+        {0x0031, 0xf1} /* one */,
+        {0x0032, 0xf2} /* two */,
+        {0x0033, 0xf3} /* three */,
+        {0x0034, 0xf4} /* four */,
+        {0x0035, 0xf5} /* five */,
+        {0x0036, 0xf6} /* six */,
+        {0x0037, 0xf7} /* seven */,
+        {0x0038, 0xf8} /* eight */,
+        {0x0039, 0xf9} /* nine */,
+        {0x003a, 0x7a} /* colon */,
+        {0x003b, 0x5e} /* semicolon */,
+        {0x003c, 0x4c} /* sign */,
+        {0x003d, 0x7e} /* sign */,
+        {0x003e, 0x6e} /* sign */,
+        {0x003f, 0x6f} /* mark */,
+        {0x0040, 0x7c} /* at */,
+        {0x0041, 0xc1} /* capital letter a */,
+        {0x0042, 0xc2} /* capital letter b */,
+        {0x0043, 0xc3} /* capital letter c */,
+        {0x0044, 0xc4} /* capital letter d */,
+        {0x0045, 0xc5} /* capital letter e */,
+        {0x0046, 0xc6} /* capital letter f */,
+        {0x0047, 0xc7} /* capital letter g */,
+        {0x0048, 0xc8} /* capital letter h */,
+        {0x0049, 0xc9} /* capital letter i */,
+        {0x004a, 0xd1} /* capital letter j */,
+        {0x004b, 0xd2} /* capital letter k */,
+        {0x004c, 0xd3} /* capital letter l */,
+        {0x004d, 0xd4} /* capital letter m */,
+        {0x004e, 0xd5} /* capital letter n */,
+        {0x004f, 0xd6} /* capital letter o */,
+        {0x0050, 0xd7} /* capital letter p */,
+        {0x0051, 0xd8} /* capital letter q */,
+        {0x0052, 0xd9} /* capital letter r */,
+        {0x0053, 0xe2} /* capital letter s */,
+        {0x0054, 0xe3} /* capital letter t */,
+        {0x0055, 0xe4} /* capital letter u */,
+        {0x0056, 0xe5} /* capital letter v */,
+        {0x0057, 0xe6} /* capital letter w */,
+        {0x0058, 0xe7} /* capital letter x */,
+        {0x0059, 0xe8} /* capital letter y */,
+        {0x005a, 0xe9} /* capital letter z */,
+        {0x005b, 0x4a} /* square bracket */,
+        {0x005c, 0xe0} /* solidus */,
+        {0x005d, 0x5a} /* square bracket */,
+        {0x005e, 0x5f} /* accent */,
+        {0x005f, 0x6d} /* line */,
+        {0x0060, 0x79} /* accent */,
+        {0x0061, 0x81} /* small letter a */,
+        {0x0062, 0x82} /* small letter b */,
+        {0x0063, 0x83} /* small letter c */,
+        {0x0064, 0x84} /* small letter d */,
+        {0x0065, 0x85} /* small letter e */,
+        {0x0066, 0x86} /* small letter f */,
+        {0x0067, 0x87} /* small letter g */,
+        {0x0068, 0x88} /* small letter h */,
+        {0x0069, 0x89} /* small letter i */,
+        {0x006a, 0x91} /* small letter j */,
+        {0x006b, 0x92} /* small letter k */,
+        {0x006c, 0x93} /* small letter l */,
+        {0x006d, 0x94} /* small letter m */,
+        {0x006e, 0x95} /* small letter n */,
+        {0x006f, 0x96} /* small letter o */,
+        {0x0070, 0x97} /* small letter p */,
+        {0x0071, 0x98} /* small letter q */,
+        {0x0072, 0x99} /* small letter r */,
+        {0x0073, 0xa2} /* small letter s */,
+        {0x0074, 0xa3} /* small letter t */,
+        {0x0075, 0xa4} /* small letter u */,
+        {0x0076, 0xa5} /* small letter v */,
+        {0x0077, 0xa6} /* small letter w */,
+        {0x0078, 0xa7} /* small letter x */,
+        {0x0079, 0xa8} /* small letter y */,
+        {0x007a, 0xa9} /* small letter z */,
+        {0x007b, 0xc0} /* curly bracket */,
+        {0x007c, 0xbb} /* line */,
+        {0x007d, 0xd0} /* curly bracket */,
+        {0x007e, 0xa1} /* tilde */,
+        {0x007f, 0x07} /* (del) */,
+        {0x0080, 0x20} /* character (pad) */,
+        {0x0081, 0x21} /* octet preset (hop) */,
+        {0x0082, 0x22} /* permitted here (bph) */,
+        {0x0083, 0x23} /* break here (nbh) */,
+        {0x0084, 0x24} /* (ind) */,
+        {0x0085, 0x15} /* line (nel) */,
+        {0x0086, 0x06} /* of selected area (ssa) */,
+        {0x0087, 0x17} /* of selected area (esa) */,
+        {0x0088, 0x28} /* tabulation set (hts) */,
+        {0x0089, 0x29} /* tabulation with justification (htj) */,
+        {0x008a, 0x2a} /* tabulation set (vts) */,
+        {0x008b, 0x2b} /* line forward (pld) */,
+        {0x008c, 0x2c} /* line backward (plu) */,
+        {0x008d, 0x09} /* line feed (ri) */,
+        {0x008e, 0x0a} /* two (ss2) */,
+        {0x008f, 0x1b} /* three (ss3) */,
+        {0x0090, 0x30} /* control string (dcs) */,
+        {0x0091, 0x31} /* use one (pu1) */,
+        {0x0092, 0x1a} /* use two (pu2) */,
+        {0x0093, 0x33} /* transmit state (sts) */,
+        {0x0094, 0x34} /* character (cch) */,
+        {0x0095, 0x35} /* waiting (mw) */,
+        {0x0096, 0x36} /* of guarded area (spa) */,
+        {0x0097, 0x08} /* of guarded area (epa) */,
+        {0x0098, 0x38} /* of string (sos) */,
+        {0x0099, 0x39} /* graphic character introducer (sgci) */,
+        {0x009a, 0x3a} /* character introducer (sci) */,
+        {0x009b, 0x3b} /* sequence introducer (csi) */,
+        {0x009c, 0x04} /* terminator (st) */,
+        {0x009d, 0x14} /* system command (osc) */,
+        {0x009e, 0x3e} /* message (pm) */,
+        {0x009f, 0xff} /* program command (apc) */,
+        {0x00a0, 0x41} /* space */,
+        {0x00a1, 0xaa} /* exclamation mark */,
+        {0x00a2, 0xb0} /* sign */,
+        {0x00a3, 0xb1} /* sign */,
+        {0x00a4, 0x9f} /* sign */,
+        {0x00a5, 0xb2} /* sign */,
+        {0x00a6, 0x6a} /* bar */,
+        {0x00a7, 0xb5} /* sign */,
+        {0x00a8, 0xbd} /* diaeresis */,
+        {0x00a9, 0xb4} /* sign */,
+        {0x00aa, 0x9a} /* ordinal indicator */,
+        {0x00ab, 0x8a} /* double angle quotation mark */,
+        {0x00ac, 0xba} /* sign */,
+        {0x00ad, 0xca} /* hyphen */,
+        {0x00ae, 0xaf} /* sign */,
+        {0x00af, 0xbc} /* macron */,
+        {0x00b0, 0x90} /* sign */,
+        {0x00b1, 0x8f} /* sign */,
+        {0x00b2, 0xea} /* two */,
+        {0x00b3, 0xfa} /* three */,
+        {0x00b4, 0xbe} /* accent */,
+        {0x00b5, 0xa0} /* sign */,
+        {0x00b7, 0xb3} /* dot */,
+        {0x00b8, 0x9d} /* cedilla */,
+        {0x00b9, 0xda} /* one */,
+        {0x00ba, 0x9b} /* ordinal indicator */,
+        {0x00bb, 0x8b} /* double angle quotation mark */,
+        {0x00bc, 0xb7} /* fraction one quarter */,
+        {0x00bd, 0xb8} /* fraction one half */,
+        {0x00be, 0xb9} /* fraction three quarters */,
+        {0x00bf, 0xab} /* question mark */,
+        {0x00c0, 0x64} /* capital letter a with grave */,
+        {0x00c1, 0x65} /* capital letter a with acute */,
+        {0x00c2, 0x62} /* capital letter a with circumflex */,
+        {0x00c3, 0x66} /* capital letter a with tilde */,
+        {0x00c4, 0x63} /* capital letter a with diaeresis */,
+        {0x00c5, 0x67} /* capital letter a with ring above */,
+        {0x00c6, 0x9e} /* capital letter ae */,
+        {0x00c7, 0x68} /* capital letter c with cedilla */,
+        {0x00c8, 0x74} /* capital letter e with grave */,
+        {0x00c9, 0x71} /* capital letter e with acute */,
+        {0x00ca, 0x72} /* capital letter e with circumflex */,
+        {0x00cb, 0x73} /* capital letter e with diaeresis */,
+        {0x00cc, 0x78} /* capital letter i with grave */,
+        {0x00cd, 0x75} /* capital letter i with acute */,
+        {0x00ce, 0x76} /* capital letter i with circumflex */,
+        {0x00cf, 0x77} /* capital letter i with diaeresis */,
+        {0x00d0, 0xac} /* capital letter eth (icelandic) */,
+        {0x00d1, 0x69} /* capital letter n with tilde */,
+        {0x00d2, 0xed} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xeb} /* capital letter o with circumflex */,
+        {0x00d5, 0xef} /* capital letter o with tilde */,
+        {0x00d6, 0xec} /* capital letter o with diaeresis */,
+        {0x00d7, 0xbf} /* sign */,
+        {0x00d8, 0x80} /* capital letter o with stroke */,
+        {0x00d9, 0xfd} /* capital letter u with grave */,
+        {0x00da, 0xfe} /* capital letter u with acute */,
+        {0x00db, 0xfb} /* capital letter u with circumflex */,
+        {0x00dc, 0xfc} /* capital letter u with diaeresis */,
+        {0x00dd, 0xad} /* capital letter y with acute */,
+        {0x00de, 0xae} /* capital letter thorn (icelandic) */,
+        {0x00df, 0x59} /* small letter sharp s (german) */,
+        {0x00e0, 0x44} /* small letter a with grave */,
+        {0x00e1, 0x45} /* small letter a with acute */,
+        {0x00e2, 0x42} /* small letter a with circumflex */,
+        {0x00e3, 0x46} /* small letter a with tilde */,
+        {0x00e4, 0x43} /* small letter a with diaeresis */,
+        {0x00e5, 0x47} /* small letter a with ring above */,
+        {0x00e6, 0x9c} /* small letter ae */,
+        {0x00e7, 0x48} /* small letter c with cedilla */,
+        {0x00e8, 0x54} /* small letter e with grave */,
+        {0x00e9, 0x51} /* small letter e with acute */,
+        {0x00ea, 0x52} /* small letter e with circumflex */,
+        {0x00eb, 0x53} /* small letter e with diaeresis */,
+        {0x00ec, 0x58} /* small letter i with grave */,
+        {0x00ed, 0x55} /* small letter i with acute */,
+        {0x00ee, 0x56} /* small letter i with circumflex */,
+        {0x00ef, 0x57} /* small letter i with diaeresis */,
+        {0x00f0, 0x8c} /* small letter eth (icelandic) */,
+        {0x00f1, 0x49} /* small letter n with tilde */,
+        {0x00f2, 0xcd} /* small letter o with grave */,
+        {0x00f3, 0xce} /* small letter o with acute */,
+        {0x00f4, 0xcb} /* small letter o with circumflex */,
+        {0x00f5, 0xcf} /* small letter o with tilde */,
+        {0x00f6, 0xcc} /* small letter o with diaeresis */,
+        {0x00f7, 0xe1} /* sign */,
+        {0x00f8, 0x70} /* small letter o with stroke */,
+        {0x00f9, 0xdd} /* small letter u with grave */,
+        {0x00fa, 0xde} /* small letter u with acute */,
+        {0x00fb, 0xdb} /* small letter u with circumflex */,
+        {0x00fc, 0xdc} /* small letter u with diaeresis */,
+        {0x00fd, 0x8d} /* small letter y with acute */,
+        {0x00fe, 0x8e} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xdf} /* small letter y with diaeresis */
+};
+
+/*
+#define cet_ucs4_to_ibm500_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm500_extra[cet_ucs4_to_ibm500_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm500 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm500,             /* name of character set        */
+       cet_cs_alias_ibm500,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm500,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm500,            /* first non standard character */
+       cet_ucs4_cnt_ibm500,            /* number of values in table    */
+
+       cet_ucs4_to_ibm500_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm500_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm500_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 
+       0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 
+       0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 
+       0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 
+       0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 
+       0x00e7, 0x00f1, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 
+       0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 
+       0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 
+       0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 
+       0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 
+       0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 
+       0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 
+       0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 
+       0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 
+       0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 
+       0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 
+       0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7, 
+       0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 
+       0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 
+       0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm850.h b/gpsbabel/cet/ibm850.h
new file mode 100644 (file)
index 0000000..30a039b
--- /dev/null
@@ -0,0 +1,257 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM850" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm850_h
+#define ibm850_h
+
+#define cet_cs_name_ibm850 "IBM850"
+
+const char *cet_cs_alias_ibm850[] = 
+{
+       "IBM850/CR-LF", "850/CR-LF", "CP850/CR-LF", "csPC850Multilingual",
+       NULL
+};
+
+#define cet_ucs4_ofs_ibm850 128
+#define cet_ucs4_cnt_ibm850 128
+
+const int cet_ucs4_map_ibm850[cet_ucs4_cnt_ibm850] =
+{
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, 
+       0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 
+       0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 
+       0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0, 
+       0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, 
+       0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce, 
+       0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580, 
+       0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe, 
+       0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4, 
+       0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8, 
+       0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm850_ct 128
+
+const cet_ucs4_link_t cet_ucs4_to_ibm850_links[cet_ucs4_to_ibm850_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a1, 0xad} /* exclamation mark */,
+        {0x00a2, 0xbd} /* sign */,
+        {0x00a3, 0x9c} /* sign */,
+        {0x00a4, 0xcf} /* sign */,
+        {0x00a5, 0xbe} /* sign */,
+        {0x00a6, 0xdd} /* bar */,
+        {0x00a7, 0xf5} /* sign */,
+        {0x00a8, 0xf9} /* diaeresis */,
+        {0x00a9, 0xb8} /* sign */,
+        {0x00aa, 0xa6} /* ordinal indicator */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ac, 0xaa} /* sign */,
+        {0x00ad, 0xf0} /* hyphen */,
+        {0x00ae, 0xa9} /* sign */,
+        {0x00af, 0xee} /* macron */,
+        {0x00b0, 0xf8} /* sign */,
+        {0x00b1, 0xf1} /* sign */,
+        {0x00b2, 0xfd} /* two */,
+        {0x00b3, 0xfc} /* three */,
+        {0x00b4, 0xef} /* accent */,
+        {0x00b5, 0xe6} /* sign */,
+        {0x00b6, 0xf4} /* sign */,
+        {0x00b7, 0xfa} /* dot */,
+        {0x00b8, 0xf7} /* cedilla */,
+        {0x00b9, 0xfb} /* one */,
+        {0x00ba, 0xa7} /* ordinal indicator */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00bc, 0xac} /* fraction one quarter */,
+        {0x00bd, 0xab} /* fraction one half */,
+        {0x00be, 0xf3} /* fraction three quarters */,
+        {0x00bf, 0xa8} /* question mark */,
+        {0x00c0, 0xb7} /* capital letter a with grave */,
+        {0x00c1, 0xb5} /* capital letter a with acute */,
+        {0x00c2, 0xb6} /* capital letter a with circumflex */,
+        {0x00c3, 0xc7} /* capital letter a with tilde */,
+        {0x00c4, 0x8e} /* capital letter a with diaeresis */,
+        {0x00c5, 0x8f} /* capital letter a with ring above */,
+        {0x00c6, 0x92} /* capital letter ae */,
+        {0x00c7, 0x80} /* capital letter c with cedilla */,
+        {0x00c8, 0xd4} /* capital letter e with grave */,
+        {0x00c9, 0x90} /* capital letter e with acute */,
+        {0x00ca, 0xd2} /* capital letter e with circumflex */,
+        {0x00cb, 0xd3} /* capital letter e with diaeresis */,
+        {0x00cc, 0xde} /* capital letter i with grave */,
+        {0x00cd, 0xd6} /* capital letter i with acute */,
+        {0x00ce, 0xd7} /* capital letter i with circumflex */,
+        {0x00cf, 0xd8} /* capital letter i with diaeresis */,
+        {0x00d0, 0xd1} /* capital letter eth (icelandic) */,
+        {0x00d1, 0xa5} /* capital letter n with tilde */,
+        {0x00d2, 0xe3} /* capital letter o with grave */,
+        {0x00d3, 0xe0} /* capital letter o with acute */,
+        {0x00d4, 0xe2} /* capital letter o with circumflex */,
+        {0x00d5, 0xe5} /* capital letter o with tilde */,
+        {0x00d6, 0x99} /* capital letter o with diaeresis */,
+        {0x00d7, 0x9e} /* sign */,
+        {0x00d8, 0x9d} /* capital letter o with stroke */,
+        {0x00d9, 0xeb} /* capital letter u with grave */,
+        {0x00da, 0xe9} /* capital letter u with acute */,
+        {0x00db, 0xea} /* capital letter u with circumflex */,
+        {0x00dc, 0x9a} /* capital letter u with diaeresis */,
+        {0x00dd, 0xed} /* capital letter y with acute */,
+        {0x00de, 0xe8} /* capital letter thorn (icelandic) */,
+        {0x00df, 0xe1} /* small letter sharp s (german) */,
+        {0x00e0, 0x85} /* small letter a with grave */,
+        {0x00e1, 0xa0} /* small letter a with acute */,
+        {0x00e2, 0x83} /* small letter a with circumflex */,
+        {0x00e3, 0xc6} /* small letter a with tilde */,
+        {0x00e4, 0x84} /* small letter a with diaeresis */,
+        {0x00e5, 0x86} /* small letter a with ring above */,
+        {0x00e6, 0x91} /* small letter ae */,
+        {0x00e7, 0x87} /* small letter c with cedilla */,
+        {0x00e8, 0x8a} /* small letter e with grave */,
+        {0x00e9, 0x82} /* small letter e with acute */,
+        {0x00ea, 0x88} /* small letter e with circumflex */,
+        {0x00eb, 0x89} /* small letter e with diaeresis */,
+        {0x00ec, 0x8d} /* small letter i with grave */,
+        {0x00ed, 0xa1} /* small letter i with acute */,
+        {0x00ee, 0x8c} /* small letter i with circumflex */,
+        {0x00ef, 0x8b} /* small letter i with diaeresis */,
+        {0x00f0, 0xd0} /* small letter eth (icelandic) */,
+        {0x00f1, 0xa4} /* small letter n with tilde */,
+        {0x00f2, 0x95} /* small letter o with grave */,
+        {0x00f3, 0xa2} /* small letter o with acute */,
+        {0x00f4, 0x93} /* small letter o with circumflex */,
+        {0x00f5, 0xe4} /* small letter o with tilde */,
+        {0x00f6, 0x94} /* small letter o with diaeresis */,
+        {0x00f7, 0xf6} /* sign */,
+        {0x00f8, 0x9b} /* small letter o with stroke */,
+        {0x00f9, 0x97} /* small letter u with grave */,
+        {0x00fa, 0xa3} /* small letter u with acute */,
+        {0x00fb, 0x96} /* small letter u with circumflex */,
+        {0x00fc, 0x81} /* small letter u with diaeresis */,
+        {0x00fd, 0xec} /* small letter y with acute */,
+        {0x00fe, 0xe7} /* small letter thorn (icelandic) */,
+        {0x00ff, 0x98} /* small letter y with diaeresis */,
+        {0x0131, 0xd5} /* small letter i dotless */,
+        {0x0192, 0x9f} /* minuscule latine f hameçon */,
+        {0x2017, 0xf2} /* low line */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */
+};
+
+/*
+#define cet_ucs4_to_ibm850_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm850_extra[cet_ucs4_to_ibm850_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm850 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm850,             /* name of character set        */
+       cet_cs_alias_ibm850,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm850,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm850,            /* first non standard character */
+       cet_ucs4_cnt_ibm850,            /* number of values in table    */
+
+       cet_ucs4_to_ibm850_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm850_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm850_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, 
+       0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 
+       0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 
+       0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0, 
+       0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, 
+       0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce, 
+       0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580, 
+       0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe, 
+       0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4, 
+       0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8, 
+       0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm851.h b/gpsbabel/cet/ibm851.h
new file mode 100644 (file)
index 0000000..ad35b9f
--- /dev/null
@@ -0,0 +1,255 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM851" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm851_h
+#define ibm851_h
+
+#define cet_cs_name_ibm851 "IBM851"
+
+const char *cet_cs_alias_ibm851[] = 
+{
+       "IBM851/CR-LF", "851/CR-LF", "CP851/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm851 128
+#define cet_ucs4_cnt_ibm851 128
+
+const int cet_ucs4_map_ibm851[cet_ucs4_cnt_ibm851] =
+{
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x0386, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x0388, 0x00c4, 0x0389, 
+       0x038a,     -1, 0x038c, 0x00f4, 0x00f6, 0x038e, 0x00fb, 0x00f9, 
+       0x038f, 0x00d6, 0x00dc, 0x03ac, 0x00a3, 0x03ad, 0x03ae, 0x03af, 
+       0x03ca, 0x0390, 0x03cc, 0x03cd, 0x0391, 0x0392, 0x0393, 0x0394, 
+       0x0395, 0x0396, 0x0397, 0x00bd, 0x0398, 0x0399, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039a, 0x039b, 0x039d, 
+       0x039c, 0x2563, 0x2551, 0x2557, 0x255d, 0x039e, 0x039f, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x03a0, 0x03a1, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x03a3, 
+       0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 
+       0x03b3, 0x2518, 0x250c, 0x2588, 0x2584, 0x03b4, 0x03b5, 0x2580, 
+       0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 
+       0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x00b4, 
+       0x00ad, 0x00b1, 0x03c5, 0x03c6, 0x03c7, 0x00a7, 0x03c8, 0x02db, 
+       0x00b0, 0x00a8, 0x03c9, 0x03cb, 0x03b0, 0x03ce, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm851_ct 127
+
+const cet_ucs4_link_t cet_ucs4_to_ibm851_links[cet_ucs4_to_ibm851_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a3, 0x9c} /* sign */,
+        {0x00a7, 0xf5} /* sign */,
+        {0x00a8, 0xf9} /* diaeresis */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ad, 0xf0} /* hyphen */,
+        {0x00b0, 0xf8} /* sign */,
+        {0x00b1, 0xf1} /* sign */,
+        {0x00b4, 0xef} /* accent */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00bd, 0xab} /* fraction one half */,
+        {0x00c4, 0x8e} /* capital letter a with diaeresis */,
+        {0x00c7, 0x80} /* capital letter c with cedilla */,
+        {0x00d6, 0x99} /* capital letter o with diaeresis */,
+        {0x00dc, 0x9a} /* capital letter u with diaeresis */,
+        {0x00e0, 0x85} /* small letter a with grave */,
+        {0x00e2, 0x83} /* small letter a with circumflex */,
+        {0x00e4, 0x84} /* small letter a with diaeresis */,
+        {0x00e7, 0x87} /* small letter c with cedilla */,
+        {0x00e8, 0x8a} /* small letter e with grave */,
+        {0x00e9, 0x82} /* small letter e with acute */,
+        {0x00ea, 0x88} /* small letter e with circumflex */,
+        {0x00eb, 0x89} /* small letter e with diaeresis */,
+        {0x00ee, 0x8c} /* small letter i with circumflex */,
+        {0x00ef, 0x8b} /* small letter i with diaeresis */,
+        {0x00f4, 0x93} /* small letter o with circumflex */,
+        {0x00f6, 0x94} /* small letter o with diaeresis */,
+        {0x00f9, 0x97} /* small letter u with grave */,
+        {0x00fb, 0x96} /* small letter u with circumflex */,
+        {0x00fc, 0x81} /* small letter u with diaeresis */,
+        {0x02db, 0xf7} /* ogonek */,
+        {0x0386, 0x86} /* capital letter alpha with acute */,
+        {0x0388, 0x8d} /* capital letter epsilon with acute */,
+        {0x0389, 0x8f} /* capital letter eta with acute */,
+        {0x038a, 0x90} /* capital letter iota with acute */,
+        {0x038c, 0x92} /* capital letter omicron with acute */,
+        {0x038e, 0x95} /* capital letter upsilon with acute */,
+        {0x038f, 0x98} /* capital letter omega with acute */,
+        {0x0390, 0xa1} /* small letter iota with acute and diaeresis */,
+        {0x0391, 0xa4} /* capital letter alpha */,
+        {0x0392, 0xa5} /* capital letter beta */,
+        {0x0393, 0xa6} /* capital letter gamma */,
+        {0x0394, 0xa7} /* capital letter delta */,
+        {0x0395, 0xa8} /* capital letter epsilon */,
+        {0x0396, 0xa9} /* capital letter zeta */,
+        {0x0397, 0xaa} /* capital letter eta */,
+        {0x0398, 0xac} /* capital letter theta */,
+        {0x0399, 0xad} /* capital letter iota */,
+        {0x039a, 0xb5} /* capital letter kappa */,
+        {0x039b, 0xb6} /* capital letter lamda */,
+        {0x039c, 0xb8} /* capital letter mu */,
+        {0x039d, 0xb7} /* capital letter nu */,
+        {0x039e, 0xbd} /* capital letter xi */,
+        {0x039f, 0xbe} /* capital letter omicron */,
+        {0x03a0, 0xc6} /* capital letter pi */,
+        {0x03a1, 0xc7} /* capital letter rho */,
+        {0x03a3, 0xcf} /* capital letter sigma */,
+        {0x03a4, 0xd0} /* capital letter tau */,
+        {0x03a5, 0xd1} /* capital letter upsilon */,
+        {0x03a6, 0xd2} /* capital letter phi */,
+        {0x03a7, 0xd3} /* capital letter chi */,
+        {0x03a8, 0xd4} /* capital letter psi */,
+        {0x03a9, 0xd5} /* capital letter omega */,
+        {0x03ac, 0x9b} /* small letter alpha with acute */,
+        {0x03ad, 0x9d} /* small letter epsilon with acute */,
+        {0x03ae, 0x9e} /* small letter eta with acute */,
+        {0x03af, 0x9f} /* small letter iota with acute */,
+        {0x03b0, 0xfc} /* small letter upsilon with acute and diaeresis */,
+        {0x03b1, 0xd6} /* small letter alpha */,
+        {0x03b2, 0xd7} /* small letter beta */,
+        {0x03b3, 0xd8} /* small letter gamma */,
+        {0x03b4, 0xdd} /* small letter delta */,
+        {0x03b5, 0xde} /* small letter epsilon */,
+        {0x03b6, 0xe0} /* small letter zeta */,
+        {0x03b7, 0xe1} /* small letter eta */,
+        {0x03b8, 0xe2} /* small letter theta */,
+        {0x03b9, 0xe3} /* small letter iota */,
+        {0x03ba, 0xe4} /* small letter kappa */,
+        {0x03bb, 0xe5} /* small letter lamda */,
+        {0x03bc, 0xe6} /* small letter mu */,
+        {0x03bd, 0xe7} /* small letter nu */,
+        {0x03be, 0xe8} /* small letter xi */,
+        {0x03bf, 0xe9} /* small letter omicron */,
+        {0x03c0, 0xea} /* small letter pi */,
+        {0x03c1, 0xeb} /* small letter rho */,
+        {0x03c2, 0xed} /* small letter final sigma */,
+        {0x03c3, 0xec} /* small letter sigma */,
+        {0x03c4, 0xee} /* small letter tau */,
+        {0x03c5, 0xf2} /* small letter upsilon */,
+        {0x03c6, 0xf3} /* small letter phi */,
+        {0x03c7, 0xf4} /* small letter chi */,
+        {0x03c8, 0xf6} /* small letter psi */,
+        {0x03c9, 0xfa} /* small letter omega */,
+        {0x03ca, 0xa0} /* small letter iota with diaeresis */,
+        {0x03cb, 0xfb} /* small letter upsilon with diaeresis */,
+        {0x03cc, 0xa2} /* small letter omicron with acute */,
+        {0x03cd, 0xa3} /* small letter upsilon with acute */,
+        {0x03ce, 0xfd} /* small letter omega with acute */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */
+};
+
+/*
+#define cet_ucs4_to_ibm851_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm851_extra[cet_ucs4_to_ibm851_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm851 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm851,             /* name of character set        */
+       cet_cs_alias_ibm851,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm851,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm851,            /* first non standard character */
+       cet_ucs4_cnt_ibm851,            /* number of values in table    */
+
+       cet_ucs4_to_ibm851_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm851_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm851_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x0386, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x0388, 0x00c4, 0x0389, 
+       0x038a,     -1, 0x038c, 0x00f4, 0x00f6, 0x038e, 0x00fb, 0x00f9, 
+       0x038f, 0x00d6, 0x00dc, 0x03ac, 0x00a3, 0x03ad, 0x03ae, 0x03af, 
+       0x03ca, 0x0390, 0x03cc, 0x03cd, 0x0391, 0x0392, 0x0393, 0x0394, 
+       0x0395, 0x0396, 0x0397, 0x00bd, 0x0398, 0x0399, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039a, 0x039b, 0x039d, 
+       0x039c, 0x2563, 0x2551, 0x2557, 0x255d, 0x039e, 0x039f, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x03a0, 0x03a1, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x03a3, 
+       0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 
+       0x03b3, 0x2518, 0x250c, 0x2588, 0x2584, 0x03b4, 0x03b5, 0x2580, 
+       0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 
+       0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x00b4, 
+       0x00ad, 0x00b1, 0x03c5, 0x03c6, 0x03c7, 0x00a7, 0x03c8, 0x02db, 
+       0x00b0, 0x00a8, 0x03c9, 0x03cb, 0x03b0, 0x03ce, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm852.h b/gpsbabel/cet/ibm852.h
new file mode 100644 (file)
index 0000000..019994d
--- /dev/null
@@ -0,0 +1,257 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM852" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm852_h
+#define ibm852_h
+
+#define cet_cs_name_ibm852 "IBM852"
+
+const char *cet_cs_alias_ibm852[] = 
+{
+       "IBM852/CR-LF", "852/CR-LF", "CP852/CR-LF", "pcl2", 
+       "pclatin2", NULL
+};
+
+#define cet_ucs4_ofs_ibm852 128
+#define cet_ucs4_cnt_ibm852 128
+
+const int cet_ucs4_map_ibm852[cet_ucs4_cnt_ibm852] =
+{
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x016f, 0x0107, 0x00e7, 
+       0x0142, 0x00eb, 0x0150, 0x0151, 0x00ee, 0x0179, 0x00c4, 0x0106, 
+       0x00c9, 0x0139, 0x013a, 0x00f4, 0x00f6, 0x013d, 0x013e, 0x015a, 
+       0x015b, 0x00d6, 0x00dc, 0x0164, 0x0165, 0x0141, 0x00d7, 0x010d, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x0104, 0x0105, 0x017d, 0x017e, 
+       0x0118, 0x0119, 0x00ac, 0x017a, 0x010c, 0x015f, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x011a, 
+       0x015e, 0x2563, 0x2551, 0x2557, 0x255d, 0x017b, 0x017c, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x0102, 0x0103, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, 
+       0x0111, 0x0110, 0x010e, 0x00cb, 0x010f, 0x0147, 0x00cd, 0x00ce, 
+       0x011b, 0x2518, 0x250c, 0x2588, 0x2584, 0x0162, 0x016e, 0x2580, 
+       0x00d3, 0x00df, 0x00d4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161, 
+       0x0154, 0x00da, 0x0155, 0x0170, 0x00fd, 0x00dd, 0x0163, 0x00b4, 
+       0x00ad, 0x02dd, 0x02db, 0x02c7, 0x02d8, 0x00a7, 0x00f7, 0x00b8, 
+       0x00b0, 0x00a8, 0x02d9, 0x0171, 0x0158, 0x0159, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm852_ct 128
+
+const cet_ucs4_link_t cet_ucs4_to_ibm852_links[cet_ucs4_to_ibm852_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a4, 0xcf} /* sign */,
+        {0x00a7, 0xf5} /* sign */,
+        {0x00a8, 0xf9} /* diaeresis */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ac, 0xaa} /* sign */,
+        {0x00ad, 0xf0} /* hyphen */,
+        {0x00b0, 0xf8} /* sign */,
+        {0x00b4, 0xef} /* accent */,
+        {0x00b8, 0xf7} /* cedilla */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00c1, 0xb5} /* capital letter a with acute */,
+        {0x00c2, 0xb6} /* capital letter a with circumflex */,
+        {0x00c4, 0x8e} /* capital letter a with diaeresis */,
+        {0x00c7, 0x80} /* capital letter c with cedilla */,
+        {0x00c9, 0x90} /* capital letter e with acute */,
+        {0x00cb, 0xd3} /* capital letter e with diaeresis */,
+        {0x00cd, 0xd6} /* capital letter i with acute */,
+        {0x00ce, 0xd7} /* capital letter i with circumflex */,
+        {0x00d3, 0xe0} /* capital letter o with acute */,
+        {0x00d4, 0xe2} /* capital letter o with circumflex */,
+        {0x00d6, 0x99} /* capital letter o with diaeresis */,
+        {0x00d7, 0x9e} /* sign */,
+        {0x00da, 0xe9} /* capital letter u with acute */,
+        {0x00dc, 0x9a} /* capital letter u with diaeresis */,
+        {0x00dd, 0xed} /* capital letter y with acute */,
+        {0x00df, 0xe1} /* small letter sharp s (german) */,
+        {0x00e1, 0xa0} /* small letter a with acute */,
+        {0x00e2, 0x83} /* small letter a with circumflex */,
+        {0x00e4, 0x84} /* small letter a with diaeresis */,
+        {0x00e7, 0x87} /* small letter c with cedilla */,
+        {0x00e9, 0x82} /* small letter e with acute */,
+        {0x00eb, 0x89} /* small letter e with diaeresis */,
+        {0x00ed, 0xa1} /* small letter i with acute */,
+        {0x00ee, 0x8c} /* small letter i with circumflex */,
+        {0x00f3, 0xa2} /* small letter o with acute */,
+        {0x00f4, 0x93} /* small letter o with circumflex */,
+        {0x00f6, 0x94} /* small letter o with diaeresis */,
+        {0x00f7, 0xf6} /* sign */,
+        {0x00fa, 0xa3} /* small letter u with acute */,
+        {0x00fc, 0x81} /* small letter u with diaeresis */,
+        {0x00fd, 0xec} /* small letter y with acute */,
+        {0x0102, 0xc6} /* capital letter a with breve */,
+        {0x0103, 0xc7} /* small letter a with breve */,
+        {0x0104, 0xa4} /* capital letter a with ogonek */,
+        {0x0105, 0xa5} /* small letter a with ogonek */,
+        {0x0106, 0x8f} /* capital letter c with acute */,
+        {0x0107, 0x86} /* small letter c with acute */,
+        {0x010c, 0xac} /* capital letter c with caron */,
+        {0x010d, 0x9f} /* small letter c with caron */,
+        {0x010e, 0xd2} /* capital letter d with caron */,
+        {0x010f, 0xd4} /* small letter d with caron */,
+        {0x0110, 0xd1} /* capital letter d with stroke */,
+        {0x0111, 0xd0} /* small letter d with stroke */,
+        {0x0118, 0xa8} /* capital letter e with ogonek */,
+        {0x0119, 0xa9} /* small letter e with ogonek */,
+        {0x011a, 0xb7} /* capital letter e with caron */,
+        {0x011b, 0xd8} /* small letter e with caron */,
+        {0x0139, 0x91} /* capital letter l with acute */,
+        {0x013a, 0x92} /* small letter l with acute */,
+        {0x013d, 0x95} /* capital letter l with caron */,
+        {0x013e, 0x96} /* small letter l with caron */,
+        {0x0141, 0x9d} /* capital letter l with stroke */,
+        {0x0142, 0x88} /* small letter l with stroke */,
+        {0x0143, 0xe3} /* capital letter n with acute */,
+        {0x0144, 0xe4} /* small letter n with acute */,
+        {0x0147, 0xd5} /* capital letter n with caron */,
+        {0x0148, 0xe5} /* small letter n with caron */,
+        {0x0150, 0x8a} /* capital letter o with double acute */,
+        {0x0151, 0x8b} /* small letter o with double acute */,
+        {0x0154, 0xe8} /* capital letter r with acute */,
+        {0x0155, 0xea} /* small letter r with acute */,
+        {0x0158, 0xfc} /* capital letter r with caron */,
+        {0x0159, 0xfd} /* small letter r with caron */,
+        {0x015a, 0x97} /* capital letter s with acute */,
+        {0x015b, 0x98} /* small letter s with acute */,
+        {0x015e, 0xb8} /* capital letter s with cedilla */,
+        {0x015f, 0xad} /* small letter s with cedilla */,
+        {0x0160, 0xe6} /* capital letter s with caron */,
+        {0x0161, 0xe7} /* small letter s with caron */,
+        {0x0162, 0xdd} /* capital letter t with cedilla */,
+        {0x0163, 0xee} /* small letter t with cedilla */,
+        {0x0164, 0x9b} /* capital letter t with caron */,
+        {0x0165, 0x9c} /* small letter t with caron */,
+        {0x016e, 0xde} /* capital letter u with ring above */,
+        {0x016f, 0x85} /* small letter u with ring above */,
+        {0x0170, 0xeb} /* capital letter u with double acute */,
+        {0x0171, 0xfb} /* small letter u with double acute */,
+        {0x0179, 0x8d} /* capital letter z with acute */,
+        {0x017a, 0xab} /* small letter z with acute */,
+        {0x017b, 0xbd} /* capital letter z with dot above */,
+        {0x017c, 0xbe} /* small letter z with dot above */,
+        {0x017d, 0xa6} /* capital letter z with caron */,
+        {0x017e, 0xa7} /* small letter z with caron */,
+        {0x02c7, 0xf3} /* caron */,
+        {0x02d8, 0xf4} /* breve */,
+        {0x02d9, 0xfa} /* above */,
+        {0x02db, 0xf2} /* ogonek */,
+        {0x02dd, 0xf1} /* acute accent */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */
+};
+
+/*
+#define cet_ucs4_to_ibm852_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm852_extra[cet_ucs4_to_ibm852_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm852 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm852,             /* name of character set        */
+       cet_cs_alias_ibm852,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm852,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm852,            /* first non standard character */
+       cet_ucs4_cnt_ibm852,            /* number of values in table    */
+
+       cet_ucs4_to_ibm852_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm852_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm852_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x016f, 0x0107, 0x00e7, 
+       0x0142, 0x00eb, 0x0150, 0x0151, 0x00ee, 0x0179, 0x00c4, 0x0106, 
+       0x00c9, 0x0139, 0x013a, 0x00f4, 0x00f6, 0x013d, 0x013e, 0x015a, 
+       0x015b, 0x00d6, 0x00dc, 0x0164, 0x0165, 0x0141, 0x00d7, 0x010d, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x0104, 0x0105, 0x017d, 0x017e, 
+       0x0118, 0x0119, 0x00ac, 0x017a, 0x010c, 0x015f, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x011a, 
+       0x015e, 0x2563, 0x2551, 0x2557, 0x255d, 0x017b, 0x017c, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x0102, 0x0103, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, 
+       0x0111, 0x0110, 0x010e, 0x00cb, 0x010f, 0x0147, 0x00cd, 0x00ce, 
+       0x011b, 0x2518, 0x250c, 0x2588, 0x2584, 0x0162, 0x016e, 0x2580, 
+       0x00d3, 0x00df, 0x00d4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161, 
+       0x0154, 0x00da, 0x0155, 0x0170, 0x00fd, 0x00dd, 0x0163, 0x00b4, 
+       0x00ad, 0x02dd, 0x02db, 0x02c7, 0x02d8, 0x00a7, 0x00f7, 0x00b8, 
+       0x00b0, 0x00a8, 0x02d9, 0x0171, 0x0158, 0x0159, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm855.h b/gpsbabel/cet/ibm855.h
new file mode 100644 (file)
index 0000000..ad38eed
--- /dev/null
@@ -0,0 +1,255 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM855" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm855_h
+#define ibm855_h
+
+#define cet_cs_name_ibm855 "IBM855"
+
+const char *cet_cs_alias_ibm855[] = 
+{
+       "IBM855/CR-LF", "855/CR-LF", "CP855/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm855 128
+#define cet_ucs4_cnt_ibm855 128
+
+const int cet_ucs4_map_ibm855[cet_ucs4_cnt_ibm855] =
+{
+       0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404, 
+       0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408, 
+       0x0459, 0x0409, 0x045a, 0x040a, 0x045b, 0x0093, 0x045c, 0x040c, 
+       0x045e, 0x040e, 0x045f, 0x040f, 0x044e, 0x042e, 0x044a, 0x042a, 
+       0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414, 
+       0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438, 
+       0x0418, 0x2563, 0x2551, 0x2557, 0x255d, 0x0439, 0x0419, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x043a, 0x041a, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, 
+       0x043b, 0x041b, 0x043c, 0x041c, 0x043d, 0x041d, 0x043e, 0x041e, 
+       0x043f, 0x2518, 0x250c, 0x2588, 0x2584, 0x041f, 0x044f, 0x2580, 
+       0x042f, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443, 
+       0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044c, 0x042c, 0x00b4, 
+       0x00ad, 0x044b, 0x042b, 0x0437, 0x0417, 0x0448, 0x0428, 0x044d, 
+       0x042d, 0x0449, 0x0429, 0x0447, 0x0427,     -1, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm855_ct 127
+
+const cet_ucs4_link_t cet_ucs4_to_ibm855_links[cet_ucs4_to_ibm855_ct] =
+{
+        {0x0093, 0x95} /* transmit state (sts) */,
+        {0x00a0, 0xff} /* space */,
+        {0x00a4, 0xcf} /* sign */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ad, 0xf0} /* hyphen */,
+        {0x00b4, 0xef} /* accent */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x0401, 0x85} /* capital letter io */,
+        {0x0402, 0x81} /* capital letter dje (serbocroatian) */,
+        {0x0403, 0x83} /* capital letter gje (macedonian) */,
+        {0x0404, 0x87} /* capital letter ukrainian ie */,
+        {0x0405, 0x89} /* capital letter dze (macedonian) */,
+        {0x0406, 0x8b} /* capital letter byelorussian-ukrainian i */,
+        {0x0407, 0x8d} /* capital letter yi (ukrainian) */,
+        {0x0408, 0x8f} /* capital letter je */,
+        {0x0409, 0x91} /* capital letter lje */,
+        {0x040a, 0x93} /* capital letter nje */,
+        {0x040c, 0x97} /* capital letter kje (macedonian) */,
+        {0x040e, 0x99} /* capital letter short u (byelorussian) */,
+        {0x040f, 0x9b} /* capital letter dzhe */,
+        {0x0410, 0xa1} /* capital letter a */,
+        {0x0411, 0xa3} /* capital letter be */,
+        {0x0412, 0xec} /* capital letter ve */,
+        {0x0413, 0xad} /* capital letter ghe */,
+        {0x0414, 0xa7} /* capital letter de */,
+        {0x0415, 0xa9} /* capital letter ie */,
+        {0x0416, 0xea} /* capital letter zhe */,
+        {0x0417, 0xf4} /* capital letter ze */,
+        {0x0418, 0xb8} /* capital letter i */,
+        {0x0419, 0xbe} /* capital letter short i */,
+        {0x041a, 0xc7} /* capital letter ka */,
+        {0x041b, 0xd1} /* capital letter el */,
+        {0x041c, 0xd3} /* capital letter em */,
+        {0x041d, 0xd5} /* capital letter en */,
+        {0x041e, 0xd7} /* capital letter o */,
+        {0x041f, 0xdd} /* capital letter pe */,
+        {0x0420, 0xe2} /* capital letter er */,
+        {0x0421, 0xe4} /* capital letter es */,
+        {0x0422, 0xe6} /* capital letter te */,
+        {0x0423, 0xe8} /* capital letter u */,
+        {0x0424, 0xab} /* capital letter ef */,
+        {0x0425, 0xb6} /* capital letter ha */,
+        {0x0426, 0xa5} /* capital letter tse */,
+        {0x0427, 0xfc} /* capital letter che */,
+        {0x0428, 0xf6} /* capital letter sha */,
+        {0x0429, 0xfa} /* capital letter shcha */,
+        {0x042a, 0x9f} /* capital letter hard sign */,
+        {0x042b, 0xf2} /* capital letter yeru */,
+        {0x042c, 0xee} /* capital letter soft sign */,
+        {0x042d, 0xf8} /* capital letter e */,
+        {0x042e, 0x9d} /* capital letter yu */,
+        {0x042f, 0xe0} /* capital letter ya */,
+        {0x0430, 0xa0} /* small letter a */,
+        {0x0431, 0xa2} /* small letter be */,
+        {0x0432, 0xeb} /* small letter ve */,
+        {0x0433, 0xac} /* small letter ghe */,
+        {0x0434, 0xa6} /* small letter de */,
+        {0x0435, 0xa8} /* small letter ie */,
+        {0x0436, 0xe9} /* small letter zhe */,
+        {0x0437, 0xf3} /* small letter ze */,
+        {0x0438, 0xb7} /* small letter i */,
+        {0x0439, 0xbd} /* small letter short i */,
+        {0x043a, 0xc6} /* small letter ka */,
+        {0x043b, 0xd0} /* small letter el */,
+        {0x043c, 0xd2} /* small letter em */,
+        {0x043d, 0xd4} /* small letter en */,
+        {0x043e, 0xd6} /* small letter o */,
+        {0x043f, 0xd8} /* small letter pe */,
+        {0x0440, 0xe1} /* small letter er */,
+        {0x0441, 0xe3} /* small letter es */,
+        {0x0442, 0xe5} /* small letter te */,
+        {0x0443, 0xe7} /* small letter u */,
+        {0x0444, 0xaa} /* small letter ef */,
+        {0x0445, 0xb5} /* small letter ha */,
+        {0x0446, 0xa4} /* small letter tse */,
+        {0x0447, 0xfb} /* small letter che */,
+        {0x0448, 0xf5} /* small letter sha */,
+        {0x0449, 0xf9} /* small letter shcha */,
+        {0x044a, 0x9e} /* small letter hard sign */,
+        {0x044b, 0xf1} /* small letter yeru */,
+        {0x044c, 0xed} /* small letter soft sign */,
+        {0x044d, 0xf7} /* small letter e */,
+        {0x044e, 0x9c} /* small letter yu */,
+        {0x044f, 0xde} /* small letter ya */,
+        {0x0451, 0x84} /* small letter io */,
+        {0x0452, 0x80} /* small letter dje (serbocroatian) */,
+        {0x0453, 0x82} /* small letter gje (macedonian) */,
+        {0x0454, 0x86} /* small letter ukrainian ie */,
+        {0x0455, 0x88} /* small letter dze (macedonian) */,
+        {0x0456, 0x8a} /* small letter byelorussian-ukrainian i */,
+        {0x0457, 0x8c} /* small letter yi (ukrainian) */,
+        {0x0458, 0x8e} /* small letter je */,
+        {0x0459, 0x90} /* small letter lje */,
+        {0x045a, 0x92} /* small letter nje */,
+        {0x045b, 0x94} /* small letter tshe (serbocroatian) */,
+        {0x045c, 0x96} /* small letter kje (macedonian) */,
+        {0x045e, 0x98} /* small letter short u (byelorussian) */,
+        {0x045f, 0x9a} /* small letter dzhe */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */
+};
+
+/*
+#define cet_ucs4_to_ibm855_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm855_extra[cet_ucs4_to_ibm855_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm855 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm855,             /* name of character set        */
+       cet_cs_alias_ibm855,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm855,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm855,            /* first non standard character */
+       cet_ucs4_cnt_ibm855,            /* number of values in table    */
+
+       cet_ucs4_to_ibm855_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm855_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm855_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404, 
+       0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408, 
+       0x0459, 0x0409, 0x045a, 0x040a, 0x045b, 0x0093, 0x045c, 0x040c, 
+       0x045e, 0x040e, 0x045f, 0x040f, 0x044e, 0x042e, 0x044a, 0x042a, 
+       0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414, 
+       0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438, 
+       0x0418, 0x2563, 0x2551, 0x2557, 0x255d, 0x0439, 0x0419, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x043a, 0x041a, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, 
+       0x043b, 0x041b, 0x043c, 0x041c, 0x043d, 0x041d, 0x043e, 0x041e, 
+       0x043f, 0x2518, 0x250c, 0x2588, 0x2584, 0x041f, 0x044f, 0x2580, 
+       0x042f, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443, 
+       0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044c, 0x042c, 0x00b4, 
+       0x00ad, 0x044b, 0x042b, 0x0437, 0x0417, 0x0448, 0x0428, 0x044d, 
+       0x042d, 0x0449, 0x0429, 0x0447, 0x0427,     -1, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm857.h b/gpsbabel/cet/ibm857.h
new file mode 100644 (file)
index 0000000..8f61a88
--- /dev/null
@@ -0,0 +1,252 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM857" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm857_h
+#define ibm857_h
+
+#define cet_cs_name_ibm857 "IBM857"
+
+const char *cet_cs_alias_ibm857[] = 
+{
+       "IBM857/CR-LF", "857/CR-LF", "CP857/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm857 128
+#define cet_ucs4_cnt_ibm857 128
+
+const int cet_ucs4_map_ibm857[cet_ucs4_cnt_ibm857] =
+{
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x0131, 0x00c4, 0x00c5, 
+       0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 
+       0x0130, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x015e, 0x015f, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x011e, 0x011f, 
+       0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0, 
+       0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, 
+       0x00ba, 0x00aa, 0x00ca, 0x00cb, 0x00c8,     -1, 0x00cd, 0x00ce, 
+       0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580, 
+       0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5,     -1, 
+       0x00d7, 0x00da, 0x00db, 0x00d9, 0x00ec, 0x00ff, 0x2014, 0x00b4, 
+       0x00ad, 0x00b1,     -1, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x02db, 
+       0x00b0, 0x00a8, 0x02d9, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm857_ct 124
+
+const cet_ucs4_link_t cet_ucs4_to_ibm857_links[cet_ucs4_to_ibm857_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a1, 0xad} /* exclamation mark */,
+        {0x00a2, 0xbd} /* sign */,
+        {0x00a3, 0x9c} /* sign */,
+        {0x00a4, 0xcf} /* sign */,
+        {0x00a5, 0xbe} /* sign */,
+        {0x00a6, 0xdd} /* bar */,
+        {0x00a7, 0xf5} /* sign */,
+        {0x00a8, 0xf9} /* diaeresis */,
+        {0x00a9, 0xb8} /* sign */,
+        {0x00aa, 0xd1} /* ordinal indicator */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ac, 0xaa} /* sign */,
+        {0x00ad, 0xf0} /* hyphen */,
+        {0x00ae, 0xa9} /* sign */,
+        {0x00b0, 0xf8} /* sign */,
+        {0x00b1, 0xf1} /* sign */,
+        {0x00b2, 0xfd} /* two */,
+        {0x00b3, 0xfc} /* three */,
+        {0x00b4, 0xef} /* accent */,
+        {0x00b5, 0xe6} /* sign */,
+        {0x00b6, 0xf4} /* sign */,
+        {0x00b9, 0xfb} /* one */,
+        {0x00ba, 0xd0} /* ordinal indicator */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00bc, 0xac} /* fraction one quarter */,
+        {0x00bd, 0xab} /* fraction one half */,
+        {0x00be, 0xf3} /* fraction three quarters */,
+        {0x00bf, 0xa8} /* question mark */,
+        {0x00c0, 0xb7} /* capital letter a with grave */,
+        {0x00c1, 0xb5} /* capital letter a with acute */,
+        {0x00c2, 0xb6} /* capital letter a with circumflex */,
+        {0x00c3, 0xc7} /* capital letter a with tilde */,
+        {0x00c4, 0x8e} /* capital letter a with diaeresis */,
+        {0x00c5, 0x8f} /* capital letter a with ring above */,
+        {0x00c6, 0x92} /* capital letter ae */,
+        {0x00c7, 0x80} /* capital letter c with cedilla */,
+        {0x00c8, 0xd4} /* capital letter e with grave */,
+        {0x00c9, 0x90} /* capital letter e with acute */,
+        {0x00ca, 0xd2} /* capital letter e with circumflex */,
+        {0x00cb, 0xd3} /* capital letter e with diaeresis */,
+        {0x00cc, 0xde} /* capital letter i with grave */,
+        {0x00cd, 0xd6} /* capital letter i with acute */,
+        {0x00ce, 0xd7} /* capital letter i with circumflex */,
+        {0x00cf, 0xd8} /* capital letter i with diaeresis */,
+        {0x00d1, 0xa5} /* capital letter n with tilde */,
+        {0x00d2, 0xe3} /* capital letter o with grave */,
+        {0x00d3, 0xe0} /* capital letter o with acute */,
+        {0x00d4, 0xe2} /* capital letter o with circumflex */,
+        {0x00d5, 0xe5} /* capital letter o with tilde */,
+        {0x00d6, 0x99} /* capital letter o with diaeresis */,
+        {0x00d7, 0xe8} /* sign */,
+        {0x00d8, 0x9d} /* capital letter o with stroke */,
+        {0x00d9, 0xeb} /* capital letter u with grave */,
+        {0x00da, 0xe9} /* capital letter u with acute */,
+        {0x00db, 0xea} /* capital letter u with circumflex */,
+        {0x00dc, 0x9a} /* capital letter u with diaeresis */,
+        {0x00df, 0xe1} /* small letter sharp s (german) */,
+        {0x00e0, 0x85} /* small letter a with grave */,
+        {0x00e1, 0xa0} /* small letter a with acute */,
+        {0x00e2, 0x83} /* small letter a with circumflex */,
+        {0x00e3, 0xc6} /* small letter a with tilde */,
+        {0x00e4, 0x84} /* small letter a with diaeresis */,
+        {0x00e5, 0x86} /* small letter a with ring above */,
+        {0x00e6, 0x91} /* small letter ae */,
+        {0x00e7, 0x87} /* small letter c with cedilla */,
+        {0x00e8, 0x8a} /* small letter e with grave */,
+        {0x00e9, 0x82} /* small letter e with acute */,
+        {0x00ea, 0x88} /* small letter e with circumflex */,
+        {0x00eb, 0x89} /* small letter e with diaeresis */,
+        {0x00ed, 0xa1} /* small letter i with acute */,
+        {0x00ee, 0x8c} /* small letter i with circumflex */,
+        {0x00ef, 0x8b} /* small letter i with diaeresis */,
+        {0x00f1, 0xa4} /* small letter n with tilde */,
+        {0x00f2, 0x95} /* small letter o with grave */,
+        {0x00f3, 0xa2} /* small letter o with acute */,
+        {0x00f4, 0x93} /* small letter o with circumflex */,
+        {0x00f5, 0xe4} /* small letter o with tilde */,
+        {0x00f6, 0x94} /* small letter o with diaeresis */,
+        {0x00f7, 0xf6} /* sign */,
+        {0x00f8, 0x9b} /* small letter o with stroke */,
+        {0x00f9, 0x97} /* small letter u with grave */,
+        {0x00fa, 0xa3} /* small letter u with acute */,
+        {0x00fb, 0x96} /* small letter u with circumflex */,
+        {0x00fc, 0x81} /* small letter u with diaeresis */,
+        {0x00ff, 0xed} /* small letter y with diaeresis */,
+        {0x011e, 0xa6} /* capital letter g with breve */,
+        {0x011f, 0xa7} /* small letter g with breve */,
+        {0x0130, 0x98} /* capital letter i with dot above */,
+        {0x0131, 0x8d} /* small letter i dotless */,
+        {0x015e, 0x9e} /* capital letter s with cedilla */,
+        {0x015f, 0x9f} /* small letter s with cedilla */,
+        {0x02d9, 0xfa} /* above */,
+        {0x02db, 0xf7} /* ogonek */,
+        {0x2014, 0xee} /* dash */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */
+};
+
+/*
+#define cet_ucs4_to_ibm857_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm857_extra[cet_ucs4_to_ibm857_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm857 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm857,             /* name of character set        */
+       cet_cs_alias_ibm857,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm857,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm857,            /* first non standard character */
+       cet_ucs4_cnt_ibm857,            /* number of values in table    */
+
+       cet_ucs4_to_ibm857_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm857_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm857_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x0131, 0x00c4, 0x00c5, 
+       0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 
+       0x0130, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x015e, 0x015f, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x011e, 0x011f, 
+       0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0, 
+       0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, 
+       0x00ba, 0x00aa, 0x00ca, 0x00cb, 0x00c8,     -1, 0x00cd, 0x00ce, 
+       0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580, 
+       0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5,     -1, 
+       0x00d7, 0x00da, 0x00db, 0x00d9, 0x00ec, 0x00ff, 0x2014, 0x00b4, 
+       0x00ad, 0x00b1,     -1, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x02db, 
+       0x00b0, 0x00a8, 0x02d9, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm860.h b/gpsbabel/cet/ibm860.h
new file mode 100644 (file)
index 0000000..12df860
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM860" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm860_h
+#define ibm860_h
+
+#define cet_cs_name_ibm860 "IBM860"
+
+const char *cet_cs_alias_ibm860[] = 
+{
+       "IBM860/CR-LF", "860/CR-LF", "CP860/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm860 128
+#define cet_ucs4_cnt_ibm860 128
+
+const int cet_ucs4_map_ibm860[cet_ucs4_cnt_ibm860] =
+{
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e3, 0x00e0, 0x00c1, 0x00e7, 
+       0x00ea, 0x00ca, 0x00e8, 0x00ce, 0x00d4, 0x00ec, 0x00c3, 0x00c2, 
+       0x00c9, 0x00c0, 0x00c8, 0x00f4, 0x00f5, 0x00f2, 0x00da, 0x00f9, 
+       0x00cc, 0x00d5, 0x00dc, 0x00a2, 0x00a3, 0x00d9, 0x20a7, 0x00d2, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 
+       0x00bf, 0x00d3, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x00b0, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm860_ct 128
+
+const cet_ucs4_link_t cet_ucs4_to_ibm860_links[cet_ucs4_to_ibm860_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a1, 0xad} /* exclamation mark */,
+        {0x00a2, 0x9b} /* sign */,
+        {0x00a3, 0x9c} /* sign */,
+        {0x00aa, 0xa6} /* ordinal indicator */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ac, 0xaa} /* sign */,
+        {0x00b0, 0xf8} /* sign */,
+        {0x00b1, 0xf1} /* sign */,
+        {0x00b2, 0xfd} /* two */,
+        {0x00b5, 0xe6} /* sign */,
+        {0x00b7, 0xf9} /* dot */,
+        {0x00ba, 0xa7} /* ordinal indicator */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00bc, 0xac} /* fraction one quarter */,
+        {0x00bd, 0xab} /* fraction one half */,
+        {0x00bf, 0xa8} /* question mark */,
+        {0x00c0, 0x91} /* capital letter a with grave */,
+        {0x00c1, 0x86} /* capital letter a with acute */,
+        {0x00c2, 0x8f} /* capital letter a with circumflex */,
+        {0x00c3, 0x8e} /* capital letter a with tilde */,
+        {0x00c7, 0x80} /* capital letter c with cedilla */,
+        {0x00c8, 0x92} /* capital letter e with grave */,
+        {0x00c9, 0x90} /* capital letter e with acute */,
+        {0x00ca, 0x89} /* capital letter e with circumflex */,
+        {0x00cc, 0x98} /* capital letter i with grave */,
+        {0x00ce, 0x8b} /* capital letter i with circumflex */,
+        {0x00d1, 0xa5} /* capital letter n with tilde */,
+        {0x00d2, 0x9f} /* capital letter o with grave */,
+        {0x00d3, 0xa9} /* capital letter o with acute */,
+        {0x00d4, 0x8c} /* capital letter o with circumflex */,
+        {0x00d5, 0x99} /* capital letter o with tilde */,
+        {0x00d9, 0x9d} /* capital letter u with grave */,
+        {0x00da, 0x96} /* capital letter u with acute */,
+        {0x00dc, 0x9a} /* capital letter u with diaeresis */,
+        {0x00df, 0xe1} /* small letter sharp s (german) */,
+        {0x00e0, 0x85} /* small letter a with grave */,
+        {0x00e1, 0xa0} /* small letter a with acute */,
+        {0x00e2, 0x83} /* small letter a with circumflex */,
+        {0x00e3, 0x84} /* small letter a with tilde */,
+        {0x00e7, 0x87} /* small letter c with cedilla */,
+        {0x00e8, 0x8a} /* small letter e with grave */,
+        {0x00e9, 0x82} /* small letter e with acute */,
+        {0x00ea, 0x88} /* small letter e with circumflex */,
+        {0x00ec, 0x8d} /* small letter i with grave */,
+        {0x00ed, 0xa1} /* small letter i with acute */,
+        {0x00f1, 0xa4} /* small letter n with tilde */,
+        {0x00f2, 0x95} /* small letter o with grave */,
+        {0x00f3, 0xa2} /* small letter o with acute */,
+        {0x00f4, 0x93} /* small letter o with circumflex */,
+        {0x00f5, 0x94} /* small letter o with tilde */,
+        {0x00f7, 0xf6} /* sign */,
+        {0x00f9, 0x97} /* small letter u with grave */,
+        {0x00fa, 0xa3} /* small letter u with acute */,
+        {0x00fc, 0x81} /* small letter u with diaeresis */,
+        {0x0393, 0xe2} /* capital letter gamma */,
+        {0x0398, 0xe9} /* capital letter theta */,
+        {0x03a3, 0xe4} /* capital letter sigma */,
+        {0x03a6, 0xe8} /* capital letter phi */,
+        {0x03a9, 0xea} /* capital letter omega */,
+        {0x03b1, 0xe0} /* small letter alpha */,
+        {0x03b4, 0xeb} /* small letter delta */,
+        {0x03b5, 0xee} /* small letter epsilon */,
+        {0x03c0, 0xe3} /* small letter pi */,
+        {0x03c3, 0xe5} /* small letter sigma */,
+        {0x03c4, 0xe7} /* small letter tau */,
+        {0x03c6, 0xed} /* small letter phi */,
+        {0x2022, 0xfa} /* puce */,
+        {0x207f, 0xfc} /* latin small letter n */,
+        {0x20a7, 0x9e} /* sign */,
+        {0x221a, 0xfb} /* root */,
+        {0x221e, 0xec} /* infinity */,
+        {0x2229, 0xef} /* intersection */,
+        {0x2248, 0xf7} /* equal to */,
+        {0x2261, 0xf0} /* to */,
+        {0x2264, 0xf3} /* or equal to */,
+        {0x2265, 0xf2} /* or equal to */,
+        {0x2320, 0xf4} /* half integral */,
+        {0x2321, 0xf5} /* half integral */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2552, 0xd5} /* drawings down light and right heavy */,
+        {0x2553, 0xd6} /* drawings down heavy and right light */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2555, 0xb8} /* drawings down light and left heavy */,
+        {0x2556, 0xb7} /* drawings down heavy and left light */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x2558, 0xd4} /* drawings up light and right heavy */,
+        {0x2559, 0xd3} /* drawings up heavy and right light */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255b, 0xbe} /* drawings up light and left heavy */,
+        {0x255c, 0xbd} /* drawings up heavy and left light */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x255e, 0xc6} /* drawings vertical light and right heavy */,
+        {0x255f, 0xc7} /* drawings vertical heavy and right light */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2561, 0xb5} /* drawings vertical light and left heavy */,
+        {0x2562, 0xb6} /* drawings vertical heavy and left light */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2564, 0xd1} /* drawings down light and horizontal heavy */,
+        {0x2565, 0xd2} /* drawings down heavy and horizontal light */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2567, 0xcf} /* drawings up light and horizontal heavy */,
+        {0x2568, 0xd0} /* drawings up heavy and horizontal light */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256a, 0xd8} /* drawings vertical light and horizontal heavy */,
+        {0x256b, 0xd7} /* drawings vertical heavy and horizontal light */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x258c, 0xdd} /* half block */,
+        {0x2590, 0xde} /* half block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */
+};
+
+/*
+#define cet_ucs4_to_ibm860_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm860_extra[cet_ucs4_to_ibm860_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm860 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm860,             /* name of character set        */
+       cet_cs_alias_ibm860,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm860,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm860,            /* first non standard character */
+       cet_ucs4_cnt_ibm860,            /* number of values in table    */
+
+       cet_ucs4_to_ibm860_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm860_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm860_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e3, 0x00e0, 0x00c1, 0x00e7, 
+       0x00ea, 0x00ca, 0x00e8, 0x00ce, 0x00d4, 0x00ec, 0x00c3, 0x00c2, 
+       0x00c9, 0x00c0, 0x00c8, 0x00f4, 0x00f5, 0x00f2, 0x00da, 0x00f9, 
+       0x00cc, 0x00d5, 0x00dc, 0x00a2, 0x00a3, 0x00d9, 0x20a7, 0x00d2, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 
+       0x00bf, 0x00d3, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x00b0, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm861.h b/gpsbabel/cet/ibm861.h
new file mode 100644 (file)
index 0000000..edd8e25
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM861" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm861_h
+#define ibm861_h
+
+#define cet_cs_name_ibm861 "IBM861"
+
+const char *cet_cs_alias_ibm861[] = 
+{
+       "IBM861/CR-LF", "861/CR-LF", "CP861/CR-LF", "cp-is",
+       NULL
+};
+
+#define cet_ucs4_ofs_ibm861 128
+#define cet_ucs4_cnt_ibm861 128
+
+const int cet_ucs4_map_ibm861[cet_ucs4_cnt_ibm861] =
+{
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00d0, 0x00f0, 0x00de, 0x00c4, 0x00c5, 
+       0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00fe, 0x00fb, 0x00dd, 
+       0x00fd, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x00d2, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00c1, 0x00cd, 0x00d3, 0x00da, 
+       0x00bf,     -1, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x00b0, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm861_ct 127
+
+const cet_ucs4_link_t cet_ucs4_to_ibm861_links[cet_ucs4_to_ibm861_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a1, 0xad} /* exclamation mark */,
+        {0x00a3, 0x9c} /* sign */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ac, 0xaa} /* sign */,
+        {0x00b0, 0xf8} /* sign */,
+        {0x00b1, 0xf1} /* sign */,
+        {0x00b2, 0xfd} /* two */,
+        {0x00b5, 0xe6} /* sign */,
+        {0x00b7, 0xf9} /* dot */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00bc, 0xac} /* fraction one quarter */,
+        {0x00bd, 0xab} /* fraction one half */,
+        {0x00bf, 0xa8} /* question mark */,
+        {0x00c1, 0xa4} /* capital letter a with acute */,
+        {0x00c4, 0x8e} /* capital letter a with diaeresis */,
+        {0x00c5, 0x8f} /* capital letter a with ring above */,
+        {0x00c6, 0x92} /* capital letter ae */,
+        {0x00c7, 0x80} /* capital letter c with cedilla */,
+        {0x00c9, 0x90} /* capital letter e with acute */,
+        {0x00cd, 0xa5} /* capital letter i with acute */,
+        {0x00d0, 0x8b} /* capital letter eth (icelandic) */,
+        {0x00d2, 0x9f} /* capital letter o with grave */,
+        {0x00d3, 0xa6} /* capital letter o with acute */,
+        {0x00d6, 0x99} /* capital letter o with diaeresis */,
+        {0x00d8, 0x9d} /* capital letter o with stroke */,
+        {0x00da, 0xa7} /* capital letter u with acute */,
+        {0x00dc, 0x9a} /* capital letter u with diaeresis */,
+        {0x00dd, 0x97} /* capital letter y with acute */,
+        {0x00de, 0x8d} /* capital letter thorn (icelandic) */,
+        {0x00df, 0xe1} /* small letter sharp s (german) */,
+        {0x00e0, 0x85} /* small letter a with grave */,
+        {0x00e1, 0xa0} /* small letter a with acute */,
+        {0x00e2, 0x83} /* small letter a with circumflex */,
+        {0x00e4, 0x84} /* small letter a with diaeresis */,
+        {0x00e5, 0x86} /* small letter a with ring above */,
+        {0x00e6, 0x91} /* small letter ae */,
+        {0x00e7, 0x87} /* small letter c with cedilla */,
+        {0x00e8, 0x8a} /* small letter e with grave */,
+        {0x00e9, 0x82} /* small letter e with acute */,
+        {0x00ea, 0x88} /* small letter e with circumflex */,
+        {0x00eb, 0x89} /* small letter e with diaeresis */,
+        {0x00ed, 0xa1} /* small letter i with acute */,
+        {0x00f0, 0x8c} /* small letter eth (icelandic) */,
+        {0x00f3, 0xa2} /* small letter o with acute */,
+        {0x00f4, 0x93} /* small letter o with circumflex */,
+        {0x00f6, 0x94} /* small letter o with diaeresis */,
+        {0x00f7, 0xf6} /* sign */,
+        {0x00f8, 0x9b} /* small letter o with stroke */,
+        {0x00fa, 0xa3} /* small letter u with acute */,
+        {0x00fb, 0x96} /* small letter u with circumflex */,
+        {0x00fc, 0x81} /* small letter u with diaeresis */,
+        {0x00fd, 0x98} /* small letter y with acute */,
+        {0x00fe, 0x95} /* small letter thorn (icelandic) */,
+        {0x0393, 0xe2} /* capital letter gamma */,
+        {0x0398, 0xe9} /* capital letter theta */,
+        {0x03a3, 0xe4} /* capital letter sigma */,
+        {0x03a6, 0xe8} /* capital letter phi */,
+        {0x03a9, 0xea} /* capital letter omega */,
+        {0x03b1, 0xe0} /* small letter alpha */,
+        {0x03b4, 0xeb} /* small letter delta */,
+        {0x03b5, 0xee} /* small letter epsilon */,
+        {0x03c0, 0xe3} /* small letter pi */,
+        {0x03c3, 0xe5} /* small letter sigma */,
+        {0x03c4, 0xe7} /* small letter tau */,
+        {0x03c6, 0xed} /* small letter phi */,
+        {0x2022, 0xfa} /* puce */,
+        {0x207f, 0xfc} /* latin small letter n */,
+        {0x20a7, 0x9e} /* sign */,
+        {0x221a, 0xfb} /* root */,
+        {0x221e, 0xec} /* infinity */,
+        {0x2229, 0xef} /* intersection */,
+        {0x2248, 0xf7} /* equal to */,
+        {0x2261, 0xf0} /* to */,
+        {0x2264, 0xf3} /* or equal to */,
+        {0x2265, 0xf2} /* or equal to */,
+        {0x2320, 0xf4} /* half integral */,
+        {0x2321, 0xf5} /* half integral */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2552, 0xd5} /* drawings down light and right heavy */,
+        {0x2553, 0xd6} /* drawings down heavy and right light */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2555, 0xb8} /* drawings down light and left heavy */,
+        {0x2556, 0xb7} /* drawings down heavy and left light */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x2558, 0xd4} /* drawings up light and right heavy */,
+        {0x2559, 0xd3} /* drawings up heavy and right light */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255b, 0xbe} /* drawings up light and left heavy */,
+        {0x255c, 0xbd} /* drawings up heavy and left light */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x255e, 0xc6} /* drawings vertical light and right heavy */,
+        {0x255f, 0xc7} /* drawings vertical heavy and right light */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2561, 0xb5} /* drawings vertical light and left heavy */,
+        {0x2562, 0xb6} /* drawings vertical heavy and left light */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2564, 0xd1} /* drawings down light and horizontal heavy */,
+        {0x2565, 0xd2} /* drawings down heavy and horizontal light */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2567, 0xcf} /* drawings up light and horizontal heavy */,
+        {0x2568, 0xd0} /* drawings up heavy and horizontal light */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256a, 0xd8} /* drawings vertical light and horizontal heavy */,
+        {0x256b, 0xd7} /* drawings vertical heavy and horizontal light */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x258c, 0xdd} /* half block */,
+        {0x2590, 0xde} /* half block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */
+};
+
+/*
+#define cet_ucs4_to_ibm861_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm861_extra[cet_ucs4_to_ibm861_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm861 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm861,             /* name of character set        */
+       cet_cs_alias_ibm861,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm861,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm861,            /* first non standard character */
+       cet_ucs4_cnt_ibm861,            /* number of values in table    */
+
+       cet_ucs4_to_ibm861_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm861_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm861_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00d0, 0x00f0, 0x00de, 0x00c4, 0x00c5, 
+       0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00fe, 0x00fb, 0x00dd, 
+       0x00fd, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x00d2, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00c1, 0x00cd, 0x00d3, 0x00da, 
+       0x00bf,     -1, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x00b0, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm862.h b/gpsbabel/cet/ibm862.h
new file mode 100644 (file)
index 0000000..611fbbf
--- /dev/null
@@ -0,0 +1,255 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM862" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm862_h
+#define ibm862_h
+
+#define cet_cs_name_ibm862 "IBM862"
+
+const char *cet_cs_alias_ibm862[] = 
+{
+       "IBM862/CR-LF", "862/CR-LF", "CP862/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm862 128
+#define cet_ucs4_cnt_ibm862 128
+
+const int cet_ucs4_map_ibm862[cet_ucs4_cnt_ibm862] =
+{
+       0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 
+       0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 
+       0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 
+       0x05e8, 0x05e9, 0x05ea, 0x00a2, 0x00a3, 0x00d9, 0x20a7, 0x00d2, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 
+       0x00bf,     -1, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x00b0, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm862_ct 127
+
+const cet_ucs4_link_t cet_ucs4_to_ibm862_links[cet_ucs4_to_ibm862_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a1, 0xad} /* exclamation mark */,
+        {0x00a2, 0x9b} /* sign */,
+        {0x00a3, 0x9c} /* sign */,
+        {0x00aa, 0xa6} /* ordinal indicator */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ac, 0xaa} /* sign */,
+        {0x00b0, 0xf8} /* sign */,
+        {0x00b1, 0xf1} /* sign */,
+        {0x00b2, 0xfd} /* two */,
+        {0x00b5, 0xe6} /* sign */,
+        {0x00b7, 0xf9} /* dot */,
+        {0x00ba, 0xa7} /* ordinal indicator */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00bc, 0xac} /* fraction one quarter */,
+        {0x00bd, 0xab} /* fraction one half */,
+        {0x00bf, 0xa8} /* question mark */,
+        {0x00d1, 0xa5} /* capital letter n with tilde */,
+        {0x00d2, 0x9f} /* capital letter o with grave */,
+        {0x00d9, 0x9d} /* capital letter u with grave */,
+        {0x00df, 0xe1} /* small letter sharp s (german) */,
+        {0x00e1, 0xa0} /* small letter a with acute */,
+        {0x00ed, 0xa1} /* small letter i with acute */,
+        {0x00f1, 0xa4} /* small letter n with tilde */,
+        {0x00f3, 0xa2} /* small letter o with acute */,
+        {0x00f7, 0xf6} /* sign */,
+        {0x00fa, 0xa3} /* small letter u with acute */,
+        {0x0393, 0xe2} /* capital letter gamma */,
+        {0x0398, 0xe9} /* capital letter theta */,
+        {0x03a3, 0xe4} /* capital letter sigma */,
+        {0x03a6, 0xe8} /* capital letter phi */,
+        {0x03a9, 0xea} /* capital letter omega */,
+        {0x03b1, 0xe0} /* small letter alpha */,
+        {0x03b4, 0xeb} /* small letter delta */,
+        {0x03b5, 0xee} /* small letter epsilon */,
+        {0x03c0, 0xe3} /* small letter pi */,
+        {0x03c3, 0xe5} /* small letter sigma */,
+        {0x03c4, 0xe7} /* small letter tau */,
+        {0x03c6, 0xed} /* small letter phi */,
+        {0x05d0, 0x80} /* letter alef */,
+        {0x05d1, 0x81} /* letter bet */,
+        {0x05d2, 0x82} /* letter gimel */,
+        {0x05d3, 0x83} /* letter dalet */,
+        {0x05d4, 0x84} /* letter he */,
+        {0x05d5, 0x85} /* letter vav */,
+        {0x05d6, 0x86} /* letter zayin */,
+        {0x05d7, 0x87} /* letter het */,
+        {0x05d8, 0x88} /* letter tet */,
+        {0x05d9, 0x89} /* letter yod */,
+        {0x05da, 0x8a} /* letter final kaf */,
+        {0x05db, 0x8b} /* letter kaf */,
+        {0x05dc, 0x8c} /* letter lamed */,
+        {0x05dd, 0x8d} /* letter final mem */,
+        {0x05de, 0x8e} /* letter mem */,
+        {0x05df, 0x8f} /* letter final nun */,
+        {0x05e0, 0x90} /* letter nun */,
+        {0x05e1, 0x91} /* letter samekh */,
+        {0x05e2, 0x92} /* letter ayin */,
+        {0x05e3, 0x93} /* letter final pe */,
+        {0x05e4, 0x94} /* letter pe */,
+        {0x05e5, 0x95} /* letter final tsadi */,
+        {0x05e6, 0x96} /* letter tsadi */,
+        {0x05e7, 0x97} /* letter qof */,
+        {0x05e8, 0x98} /* letter resh */,
+        {0x05e9, 0x99} /* letter shin */,
+        {0x05ea, 0x9a} /* letter tav */,
+        {0x2022, 0xfa} /* puce */,
+        {0x207f, 0xfc} /* latin small letter n */,
+        {0x20a7, 0x9e} /* sign */,
+        {0x221a, 0xfb} /* root */,
+        {0x221e, 0xec} /* infinity */,
+        {0x2229, 0xef} /* intersection */,
+        {0x2248, 0xf7} /* equal to */,
+        {0x2261, 0xf0} /* to */,
+        {0x2264, 0xf3} /* or equal to */,
+        {0x2265, 0xf2} /* or equal to */,
+        {0x2320, 0xf4} /* half integral */,
+        {0x2321, 0xf5} /* half integral */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2552, 0xd5} /* drawings down light and right heavy */,
+        {0x2553, 0xd6} /* drawings down heavy and right light */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2555, 0xb8} /* drawings down light and left heavy */,
+        {0x2556, 0xb7} /* drawings down heavy and left light */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x2558, 0xd4} /* drawings up light and right heavy */,
+        {0x2559, 0xd3} /* drawings up heavy and right light */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255b, 0xbe} /* drawings up light and left heavy */,
+        {0x255c, 0xbd} /* drawings up heavy and left light */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x255e, 0xc6} /* drawings vertical light and right heavy */,
+        {0x255f, 0xc7} /* drawings vertical heavy and right light */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2561, 0xb5} /* drawings vertical light and left heavy */,
+        {0x2562, 0xb6} /* drawings vertical heavy and left light */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2564, 0xd1} /* drawings down light and horizontal heavy */,
+        {0x2565, 0xd2} /* drawings down heavy and horizontal light */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2567, 0xcf} /* drawings up light and horizontal heavy */,
+        {0x2568, 0xd0} /* drawings up heavy and horizontal light */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256a, 0xd8} /* drawings vertical light and horizontal heavy */,
+        {0x256b, 0xd7} /* drawings vertical heavy and horizontal light */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x258c, 0xdd} /* half block */,
+        {0x2590, 0xde} /* half block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */
+};
+
+/*
+#define cet_ucs4_to_ibm862_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm862_extra[cet_ucs4_to_ibm862_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm862 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm862,             /* name of character set        */
+       cet_cs_alias_ibm862,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm862,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm862,            /* first non standard character */
+       cet_ucs4_cnt_ibm862,            /* number of values in table    */
+
+       cet_ucs4_to_ibm862_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm862_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm862_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 
+       0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 
+       0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 
+       0x05e8, 0x05e9, 0x05ea, 0x00a2, 0x00a3, 0x00d9, 0x20a7, 0x00d2, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 
+       0x00bf,     -1, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x00b0, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm863.h b/gpsbabel/cet/ibm863.h
new file mode 100644 (file)
index 0000000..682f01d
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM863" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm863_h
+#define ibm863_h
+
+#define cet_cs_name_ibm863 "IBM863"
+
+const char *cet_cs_alias_ibm863[] = 
+{
+       "IBM863/CR-LF", "863/CR-LF", "CP863/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm863 128
+#define cet_ucs4_cnt_ibm863 128
+
+const int cet_ucs4_map_ibm863[cet_ucs4_cnt_ibm863] =
+{
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00c2, 0x00e0, 0x00b6, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c0, 0x00a7, 
+       0x00c9, 0x00c8, 0x00ca, 0x00f4, 0x00cb, 0x00cf, 0x00fb, 0x00f9, 
+       0x00a4, 0x00d4, 0x00dc, 0x00a2, 0x00a3, 0x00d9, 0x00db, 0x0192, 
+       0x00a6, 0x00b4, 0x00f3, 0x00fa, 0x00a8, 0x00b8, 0x00b3, 0x00af, 
+       0x00ce, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00be, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x2205, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x2218, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm863_ct 128
+
+const cet_ucs4_link_t cet_ucs4_to_ibm863_links[cet_ucs4_to_ibm863_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a2, 0x9b} /* sign */,
+        {0x00a3, 0x9c} /* sign */,
+        {0x00a4, 0x98} /* sign */,
+        {0x00a6, 0xa0} /* bar */,
+        {0x00a7, 0x8f} /* sign */,
+        {0x00a8, 0xa4} /* diaeresis */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ac, 0xaa} /* sign */,
+        {0x00af, 0xa7} /* macron */,
+        {0x00b1, 0xf1} /* sign */,
+        {0x00b2, 0xfd} /* two */,
+        {0x00b3, 0xa6} /* three */,
+        {0x00b4, 0xa1} /* accent */,
+        {0x00b5, 0xe6} /* sign */,
+        {0x00b6, 0x86} /* sign */,
+        {0x00b7, 0xf9} /* dot */,
+        {0x00b8, 0xa5} /* cedilla */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00bc, 0xac} /* fraction one quarter */,
+        {0x00bd, 0xab} /* fraction one half */,
+        {0x00be, 0xad} /* fraction three quarters */,
+        {0x00c0, 0x8e} /* capital letter a with grave */,
+        {0x00c2, 0x84} /* capital letter a with circumflex */,
+        {0x00c7, 0x80} /* capital letter c with cedilla */,
+        {0x00c8, 0x91} /* capital letter e with grave */,
+        {0x00c9, 0x90} /* capital letter e with acute */,
+        {0x00ca, 0x92} /* capital letter e with circumflex */,
+        {0x00cb, 0x94} /* capital letter e with diaeresis */,
+        {0x00ce, 0xa8} /* capital letter i with circumflex */,
+        {0x00cf, 0x95} /* capital letter i with diaeresis */,
+        {0x00d4, 0x99} /* capital letter o with circumflex */,
+        {0x00d9, 0x9d} /* capital letter u with grave */,
+        {0x00db, 0x9e} /* capital letter u with circumflex */,
+        {0x00dc, 0x9a} /* capital letter u with diaeresis */,
+        {0x00df, 0xe1} /* small letter sharp s (german) */,
+        {0x00e0, 0x85} /* small letter a with grave */,
+        {0x00e2, 0x83} /* small letter a with circumflex */,
+        {0x00e7, 0x87} /* small letter c with cedilla */,
+        {0x00e8, 0x8a} /* small letter e with grave */,
+        {0x00e9, 0x82} /* small letter e with acute */,
+        {0x00ea, 0x88} /* small letter e with circumflex */,
+        {0x00eb, 0x89} /* small letter e with diaeresis */,
+        {0x00ec, 0x8d} /* small letter i with grave */,
+        {0x00ee, 0x8c} /* small letter i with circumflex */,
+        {0x00ef, 0x8b} /* small letter i with diaeresis */,
+        {0x00f3, 0xa2} /* small letter o with acute */,
+        {0x00f4, 0x93} /* small letter o with circumflex */,
+        {0x00f7, 0xf6} /* sign */,
+        {0x00f9, 0x97} /* small letter u with grave */,
+        {0x00fa, 0xa3} /* small letter u with acute */,
+        {0x00fb, 0x96} /* small letter u with circumflex */,
+        {0x00fc, 0x81} /* small letter u with diaeresis */,
+        {0x0192, 0x9f} /* minuscule latine f hameçon */,
+        {0x0393, 0xe2} /* capital letter gamma */,
+        {0x0398, 0xe9} /* capital letter theta */,
+        {0x03a3, 0xe4} /* capital letter sigma */,
+        {0x03a6, 0xe8} /* capital letter phi */,
+        {0x03a9, 0xea} /* capital letter omega */,
+        {0x03b1, 0xe0} /* small letter alpha */,
+        {0x03b4, 0xeb} /* small letter delta */,
+        {0x03b5, 0xee} /* small letter epsilon */,
+        {0x03c0, 0xe3} /* small letter pi */,
+        {0x03c3, 0xe5} /* small letter sigma */,
+        {0x03c4, 0xe7} /* small letter tau */,
+        {0x2022, 0xfa} /* puce */,
+        {0x207f, 0xfc} /* latin small letter n */,
+        {0x2205, 0xed} /* set */,
+        {0x2218, 0xf8} /* operator */,
+        {0x221a, 0xfb} /* root */,
+        {0x221e, 0xec} /* infinity */,
+        {0x2229, 0xef} /* intersection */,
+        {0x2248, 0xf7} /* equal to */,
+        {0x2261, 0xf0} /* to */,
+        {0x2264, 0xf3} /* or equal to */,
+        {0x2265, 0xf2} /* or equal to */,
+        {0x2310, 0xa9} /* not sign */,
+        {0x2320, 0xf4} /* half integral */,
+        {0x2321, 0xf5} /* half integral */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2552, 0xd5} /* drawings down light and right heavy */,
+        {0x2553, 0xd6} /* drawings down heavy and right light */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2555, 0xb8} /* drawings down light and left heavy */,
+        {0x2556, 0xb7} /* drawings down heavy and left light */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x2558, 0xd4} /* drawings up light and right heavy */,
+        {0x2559, 0xd3} /* drawings up heavy and right light */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255b, 0xbe} /* drawings up light and left heavy */,
+        {0x255c, 0xbd} /* drawings up heavy and left light */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x255e, 0xc6} /* drawings vertical light and right heavy */,
+        {0x255f, 0xc7} /* drawings vertical heavy and right light */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2561, 0xb5} /* drawings vertical light and left heavy */,
+        {0x2562, 0xb6} /* drawings vertical heavy and left light */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2564, 0xd1} /* drawings down light and horizontal heavy */,
+        {0x2565, 0xd2} /* drawings down heavy and horizontal light */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2567, 0xcf} /* drawings up light and horizontal heavy */,
+        {0x2568, 0xd0} /* drawings up heavy and horizontal light */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256a, 0xd8} /* drawings vertical light and horizontal heavy */,
+        {0x256b, 0xd7} /* drawings vertical heavy and horizontal light */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x258c, 0xdd} /* half block */,
+        {0x2590, 0xde} /* half block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */
+};
+
+/*
+#define cet_ucs4_to_ibm863_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm863_extra[cet_ucs4_to_ibm863_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm863 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm863,             /* name of character set        */
+       cet_cs_alias_ibm863,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm863,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm863,            /* first non standard character */
+       cet_ucs4_cnt_ibm863,            /* number of values in table    */
+
+       cet_ucs4_to_ibm863_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm863_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm863_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00c2, 0x00e0, 0x00b6, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c0, 0x00a7, 
+       0x00c9, 0x00c8, 0x00ca, 0x00f4, 0x00cb, 0x00cf, 0x00fb, 0x00f9, 
+       0x00a4, 0x00d4, 0x00dc, 0x00a2, 0x00a3, 0x00d9, 0x00db, 0x0192, 
+       0x00a6, 0x00b4, 0x00f3, 0x00fa, 0x00a8, 0x00b8, 0x00b3, 0x00af, 
+       0x00ce, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00be, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x2205, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x2218, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm864.h b/gpsbabel/cet/ibm864.h
new file mode 100644 (file)
index 0000000..4ec9234
--- /dev/null
@@ -0,0 +1,249 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM864" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm864_h
+#define ibm864_h
+
+#define cet_cs_name_ibm864 "IBM864"
+
+const char *cet_cs_alias_ibm864[] = 
+{
+       "IBM864/CR-LF", "864/CR-LF", "CP864/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm864 128
+#define cet_ucs4_cnt_ibm864 128
+
+const int cet_ucs4_map_ibm864[cet_ucs4_cnt_ibm864] =
+{
+       0x00b0, 0x00b7, 0x2218, 0x221a, 0x2592, 0x2500, 0x2502, 0x253c, 
+       0x2524, 0x252c, 0x251c, 0x2534, 0x2510, 0x250c, 0x2514, 0x2518, 
+       0x00df, 0x221e, 0x00f8, 0x00b1, 0x00bd, 0x00bc, 0x2248, 0x00ab, 
+       0x00bb, 0xfef7, 0xfef8,     -1,     -1, 0xfefb, 0xfefc, 0xe016, 
+           -1, 0x00ad, 0xfe82, 0x00a3, 0x00a4, 0xfe84,     -1,     -1, 
+       0xfe8e, 0x0628, 0x062a, 0x062b, 0x060c, 0x062c, 0x062d, 0x062e, 
+       0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 
+       0x0668, 0x0669, 0x06a4, 0x061b, 0x0633, 0x0634, 0x0635, 0x061f, 
+       0x00a2, 0x0621, 0x0622, 0x0623, 0x0624, 0xfeca, 0x0626, 0x0627, 
+       0xfe91, 0x0629, 0xfe97, 0xfe9b, 0xfe9f, 0xfea3, 0xfea7, 0x062f, 
+       0x0630, 0x0631, 0x0632, 0xfeb3, 0xfeb7, 0xfebb, 0xfebf, 0x0637, 
+       0x0638, 0xfecb, 0xfecf, 0x00a6, 0x00ac, 0x00f7, 0x00d7, 0x0639, 
+       0x0640, 0xfed2, 0xfed6, 0xfedb, 0xfede, 0xfee3, 0xfee6, 0xfeeb, 
+       0x0648, 0x0649, 0xfef3, 0x0636, 0xfee2, 0xfece, 0x063a, 0x0645, 
+       0xfe7d, 0x0651, 0x0646, 0x0647, 0xfeec, 0xfef0, 0xfef2, 0x0641, 
+       0x0642, 0xfef5, 0xfef6, 0x0644, 0x0643, 0x064a, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm864_ct 121
+
+const cet_ucs4_link_t cet_ucs4_to_ibm864_links[cet_ucs4_to_ibm864_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a2, 0xc0} /* sign */,
+        {0x00a6, 0xdb} /* bar */,
+        {0x00ab, 0x97} /* double angle quotation mark */,
+        {0x00ac, 0xdc} /* sign */,
+        {0x00ad, 0xa1} /* hyphen */,
+        {0x00b0, 0x80} /* sign */,
+        {0x00b1, 0x93} /* sign */,
+        {0x00b7, 0x81} /* dot */,
+        {0x00bb, 0x98} /* double angle quotation mark */,
+        {0x00bc, 0x95} /* fraction one quarter */,
+        {0x00bd, 0x94} /* fraction one half */,
+        {0x00d7, 0xde} /* sign */,
+        {0x00df, 0x90} /* small letter sharp s (german) */,
+        {0x00f7, 0xdd} /* sign */,
+        {0x00f8, 0x92} /* small letter o with stroke */,
+        {0x060c, 0xac} /* comma */,
+        {0x061b, 0xbb} /* semicolon */,
+        {0x061f, 0xbf} /* question mark */,
+        {0x0621, 0xc1} /* letter hamza */,
+        {0x0622, 0xc2} /* letter alef with madda above */,
+        {0x0623, 0xc3} /* letter alef with hamza above */,
+        {0x0624, 0xc4} /* letter waw with hamza above */,
+        {0x0626, 0xc6} /* letter yeh with hamza above */,
+        {0x0627, 0xc7} /* letter alef */,
+        {0x0628, 0xa9} /* letter beh */,
+        {0x0629, 0xc9} /* letter teh marbuta */,
+        {0x062a, 0xaa} /* letter teh */,
+        {0x062b, 0xab} /* letter theh */,
+        {0x062c, 0xad} /* letter jeem */,
+        {0x062d, 0xae} /* letter hah */,
+        {0x062e, 0xaf} /* letter khah */,
+        {0x062f, 0xcf} /* letter dal */,
+        {0x0630, 0xd0} /* letter thal */,
+        {0x0631, 0xd1} /* letter reh */,
+        {0x0632, 0xd2} /* letter zain */,
+        {0x0633, 0xbc} /* letter seen */,
+        {0x0634, 0xbd} /* letter sheen */,
+        {0x0635, 0xbe} /* letter sad */,
+        {0x0636, 0xeb} /* letter dad */,
+        {0x0637, 0xd7} /* letter tah */,
+        {0x0638, 0xd8} /* letter zah */,
+        {0x0639, 0xdf} /* letter ain */,
+        {0x063a, 0xee} /* letter ghain */,
+        {0x0640, 0xe0} /* tatweel */,
+        {0x0641, 0xf7} /* letter feh */,
+        {0x0642, 0xf8} /* letter qaf */,
+        {0x0643, 0xfc} /* letter kaf */,
+        {0x0644, 0xfb} /* letter lam */,
+        {0x0645, 0xef} /* letter meem */,
+        {0x0646, 0xf2} /* letter noon */,
+        {0x0647, 0xf3} /* letter heh */,
+        {0x0648, 0xe8} /* letter waw */,
+        {0x0649, 0xe9} /* letter alef maksura */,
+        {0x064a, 0xfd} /* letter yeh */,
+        {0x0651, 0xf1} /* shadda */,
+        {0x0660, 0xb0} /* arabic-indic digit zero */,
+        {0x0661, 0xb1} /* arabic-indic digit one */,
+        {0x0662, 0xb2} /* arabic-indic digit two */,
+        {0x0663, 0xb3} /* arabic-indic digit three */,
+        {0x0664, 0xb4} /* arabic-indic digit four */,
+        {0x0665, 0xb5} /* arabic-indic digit five */,
+        {0x0666, 0xb6} /* arabic-indic digit six */,
+        {0x0667, 0xb7} /* arabic-indic digit seven */,
+        {0x0668, 0xb8} /* arabic-indic digit eight */,
+        {0x0669, 0xb9} /* arabic-indic digit nine */,
+        {0x06a4, 0xba} /* letter veh */,
+        {0x2218, 0x82} /* operator */,
+        {0x221a, 0x83} /* root */,
+        {0x221e, 0x91} /* infinity */,
+        {0x2248, 0x96} /* equal to */,
+        {0x2500, 0x85} /* drawings light horizontal */,
+        {0x2502, 0x86} /* drawings light vertical */,
+        {0x250c, 0x8d} /* drawings light down and right */,
+        {0x2510, 0x8c} /* drawings light down and left */,
+        {0x2514, 0x8e} /* drawings light up and right */,
+        {0x2518, 0x8f} /* drawings light up and left */,
+        {0x251c, 0x8a} /* drawings light vertical and right */,
+        {0x2524, 0x88} /* drawings light vertical and left */,
+        {0x252c, 0x89} /* drawings light down and horizontal */,
+        {0x2534, 0x8b} /* drawings light up and horizontal */,
+        {0x253c, 0x87} /* drawings light vertical and horizontal */,
+        {0x2592, 0x84} /* shade */,
+        {0x25a0, 0xfe} /* square */,
+        {0xe016, 0x9f} /* letter alef final form compatibility (ibm868 144) */,
+        {0xfe7d, 0xf0} /* shadda medial form */,
+        {0xfe82, 0xa2} /* letter alef with madda above final form */,
+        {0xfe84, 0xa5} /* letter alef with hamza above final form */,
+        {0xfe8e, 0xa8} /* letter alef final form */,
+        {0xfe91, 0xc8} /* letter beh initial form */,
+        {0xfe97, 0xca} /* letter teh initial form */,
+        {0xfe9b, 0xcb} /* letter theh initial form */,
+        {0xfe9f, 0xcc} /* letter jeem initial form */,
+        {0xfea3, 0xcd} /* letter hah initial form */,
+        {0xfea7, 0xce} /* letter khah initial form */,
+        {0xfeb3, 0xd3} /* letter seen initial form */,
+        {0xfeb7, 0xd4} /* letter sheen initial form */,
+        {0xfebb, 0xd5} /* letter sad initial form */,
+        {0xfebf, 0xd6} /* letter dad initial form */,
+        {0xfeca, 0xc5} /* letter ain final form */,
+        {0xfecb, 0xd9} /* letter ain initial form */,
+        {0xfece, 0xed} /* letter ghain final form */,
+        {0xfecf, 0xda} /* letter ghain initial form */,
+        {0xfed2, 0xe1} /* letter feh final form */,
+        {0xfed6, 0xe2} /* letter qaf final form */,
+        {0xfedb, 0xe3} /* letter kaf initial form */,
+        {0xfede, 0xe4} /* letter lam final form */,
+        {0xfee2, 0xec} /* letter meem final form */,
+        {0xfee3, 0xe5} /* letter meem initial form */,
+        {0xfee6, 0xe6} /* letter noon final form */,
+        {0xfeeb, 0xe7} /* letter heh initial form */,
+        {0xfeec, 0xf4} /* letter heh medial form */,
+        {0xfef0, 0xf5} /* letter alef maksura final form */,
+        {0xfef2, 0xf6} /* letter yeh final form */,
+        {0xfef3, 0xea} /* letter yeh initial form */,
+        {0xfef5, 0xf9} /* ligature lam with alef with madda above */,
+        {0xfef6, 0xfa} /* ligature lam with alef with madda above */,
+        {0xfef7, 0x99} /* ligature lam with alef with hamza above */,
+        {0xfef8, 0x9a} /* ligature lam with alef with hamza above */,
+        {0xfefb, 0x9d} /* ligature lam with alef isolated form */,
+        {0xfefc, 0x9e} /* ligature lam with alef final form */
+};
+
+/*
+#define cet_ucs4_to_ibm864_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm864_extra[cet_ucs4_to_ibm864_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm864 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm864,             /* name of character set        */
+       cet_cs_alias_ibm864,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm864,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm864,            /* first non standard character */
+       cet_ucs4_cnt_ibm864,            /* number of values in table    */
+
+       cet_ucs4_to_ibm864_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm864_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm864_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00b0, 0x00b7, 0x2218, 0x221a, 0x2592, 0x2500, 0x2502, 0x253c, 
+       0x2524, 0x252c, 0x251c, 0x2534, 0x2510, 0x250c, 0x2514, 0x2518, 
+       0x00df, 0x221e, 0x00f8, 0x00b1, 0x00bd, 0x00bc, 0x2248, 0x00ab, 
+       0x00bb, 0xfef7, 0xfef8,     -1,     -1, 0xfefb, 0xfefc, 0xe016, 
+           -1, 0x00ad, 0xfe82, 0x00a3, 0x00a4, 0xfe84,     -1,     -1, 
+       0xfe8e, 0x0628, 0x062a, 0x062b, 0x060c, 0x062c, 0x062d, 0x062e, 
+       0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 
+       0x0668, 0x0669, 0x06a4, 0x061b, 0x0633, 0x0634, 0x0635, 0x061f, 
+       0x00a2, 0x0621, 0x0622, 0x0623, 0x0624, 0xfeca, 0x0626, 0x0627, 
+       0xfe91, 0x0629, 0xfe97, 0xfe9b, 0xfe9f, 0xfea3, 0xfea7, 0x062f, 
+       0x0630, 0x0631, 0x0632, 0xfeb3, 0xfeb7, 0xfebb, 0xfebf, 0x0637, 
+       0x0638, 0xfecb, 0xfecf, 0x00a6, 0x00ac, 0x00f7, 0x00d7, 0x0639, 
+       0x0640, 0xfed2, 0xfed6, 0xfedb, 0xfede, 0xfee3, 0xfee6, 0xfeeb, 
+       0x0648, 0x0649, 0xfef3, 0x0636, 0xfee2, 0xfece, 0x063a, 0x0645, 
+       0xfe7d, 0x0651, 0x0646, 0x0647, 0xfeec, 0xfef0, 0xfef2, 0x0641, 
+       0x0642, 0xfef5, 0xfef6, 0x0644, 0x0643, 0x064a, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm865.h b/gpsbabel/cet/ibm865.h
new file mode 100644 (file)
index 0000000..c78f8a1
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM865" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm865_h
+#define ibm865_h
+
+#define cet_cs_name_ibm865 "IBM865"
+
+const char *cet_cs_alias_ibm865[] = 
+{
+       "IBM865/CR-LF", "865/CR-LF", "CP865/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm865 128
+#define cet_ucs4_cnt_ibm865 128
+
+const int cet_ucs4_map_ibm865[cet_ucs4_cnt_ibm865] =
+{
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, 
+       0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 
+       0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x0192, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 
+       0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x2205, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x2218, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm865_ct 128
+
+const cet_ucs4_link_t cet_ucs4_to_ibm865_links[cet_ucs4_to_ibm865_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a1, 0xad} /* exclamation mark */,
+        {0x00a3, 0x9c} /* sign */,
+        {0x00aa, 0xa6} /* ordinal indicator */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ac, 0xaa} /* sign */,
+        {0x00b1, 0xf1} /* sign */,
+        {0x00b2, 0xfd} /* two */,
+        {0x00b5, 0xe6} /* sign */,
+        {0x00b7, 0xf9} /* dot */,
+        {0x00ba, 0xa7} /* ordinal indicator */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00bc, 0xac} /* fraction one quarter */,
+        {0x00bd, 0xab} /* fraction one half */,
+        {0x00bf, 0xa8} /* question mark */,
+        {0x00c4, 0x8e} /* capital letter a with diaeresis */,
+        {0x00c5, 0x8f} /* capital letter a with ring above */,
+        {0x00c6, 0x92} /* capital letter ae */,
+        {0x00c7, 0x80} /* capital letter c with cedilla */,
+        {0x00c9, 0x90} /* capital letter e with acute */,
+        {0x00d1, 0xa5} /* capital letter n with tilde */,
+        {0x00d6, 0x99} /* capital letter o with diaeresis */,
+        {0x00d8, 0x9d} /* capital letter o with stroke */,
+        {0x00dc, 0x9a} /* capital letter u with diaeresis */,
+        {0x00df, 0xe1} /* small letter sharp s (german) */,
+        {0x00e0, 0x85} /* small letter a with grave */,
+        {0x00e1, 0xa0} /* small letter a with acute */,
+        {0x00e2, 0x83} /* small letter a with circumflex */,
+        {0x00e4, 0x84} /* small letter a with diaeresis */,
+        {0x00e5, 0x86} /* small letter a with ring above */,
+        {0x00e6, 0x91} /* small letter ae */,
+        {0x00e7, 0x87} /* small letter c with cedilla */,
+        {0x00e8, 0x8a} /* small letter e with grave */,
+        {0x00e9, 0x82} /* small letter e with acute */,
+        {0x00ea, 0x88} /* small letter e with circumflex */,
+        {0x00eb, 0x89} /* small letter e with diaeresis */,
+        {0x00ec, 0x8d} /* small letter i with grave */,
+        {0x00ed, 0xa1} /* small letter i with acute */,
+        {0x00ee, 0x8c} /* small letter i with circumflex */,
+        {0x00ef, 0x8b} /* small letter i with diaeresis */,
+        {0x00f1, 0xa4} /* small letter n with tilde */,
+        {0x00f2, 0x95} /* small letter o with grave */,
+        {0x00f3, 0xa2} /* small letter o with acute */,
+        {0x00f4, 0x93} /* small letter o with circumflex */,
+        {0x00f6, 0x94} /* small letter o with diaeresis */,
+        {0x00f7, 0xf6} /* sign */,
+        {0x00f8, 0x9b} /* small letter o with stroke */,
+        {0x00f9, 0x97} /* small letter u with grave */,
+        {0x00fa, 0xa3} /* small letter u with acute */,
+        {0x00fb, 0x96} /* small letter u with circumflex */,
+        {0x00fc, 0x81} /* small letter u with diaeresis */,
+        {0x00ff, 0x98} /* small letter y with diaeresis */,
+        {0x0192, 0x9f} /* minuscule latine f hameçon */,
+        {0x0393, 0xe2} /* capital letter gamma */,
+        {0x0398, 0xe9} /* capital letter theta */,
+        {0x03a3, 0xe4} /* capital letter sigma */,
+        {0x03a6, 0xe8} /* capital letter phi */,
+        {0x03a9, 0xea} /* capital letter omega */,
+        {0x03b1, 0xe0} /* small letter alpha */,
+        {0x03b4, 0xeb} /* small letter delta */,
+        {0x03b5, 0xee} /* small letter epsilon */,
+        {0x03c0, 0xe3} /* small letter pi */,
+        {0x03c3, 0xe5} /* small letter sigma */,
+        {0x03c4, 0xe7} /* small letter tau */,
+        {0x2022, 0xfa} /* puce */,
+        {0x207f, 0xfc} /* latin small letter n */,
+        {0x20a7, 0x9e} /* sign */,
+        {0x2205, 0xed} /* set */,
+        {0x2218, 0xf8} /* operator */,
+        {0x221a, 0xfb} /* root */,
+        {0x221e, 0xec} /* infinity */,
+        {0x2229, 0xef} /* intersection */,
+        {0x2248, 0xf7} /* equal to */,
+        {0x2261, 0xf0} /* to */,
+        {0x2264, 0xf3} /* or equal to */,
+        {0x2265, 0xf2} /* or equal to */,
+        {0x2310, 0xa9} /* not sign */,
+        {0x2320, 0xf4} /* half integral */,
+        {0x2321, 0xf5} /* half integral */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2552, 0xd5} /* drawings down light and right heavy */,
+        {0x2553, 0xd6} /* drawings down heavy and right light */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2555, 0xb8} /* drawings down light and left heavy */,
+        {0x2556, 0xb7} /* drawings down heavy and left light */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x2558, 0xd4} /* drawings up light and right heavy */,
+        {0x2559, 0xd3} /* drawings up heavy and right light */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255b, 0xbe} /* drawings up light and left heavy */,
+        {0x255c, 0xbd} /* drawings up heavy and left light */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x255e, 0xc6} /* drawings vertical light and right heavy */,
+        {0x255f, 0xc7} /* drawings vertical heavy and right light */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2561, 0xb5} /* drawings vertical light and left heavy */,
+        {0x2562, 0xb6} /* drawings vertical heavy and left light */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2564, 0xd1} /* drawings down light and horizontal heavy */,
+        {0x2565, 0xd2} /* drawings down heavy and horizontal light */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2567, 0xcf} /* drawings up light and horizontal heavy */,
+        {0x2568, 0xd0} /* drawings up heavy and horizontal light */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256a, 0xd8} /* drawings vertical light and horizontal heavy */,
+        {0x256b, 0xd7} /* drawings vertical heavy and horizontal light */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x258c, 0xdd} /* half block */,
+        {0x2590, 0xde} /* half block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */
+};
+
+/*
+#define cet_ucs4_to_ibm865_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm865_extra[cet_ucs4_to_ibm865_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm865 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm865,             /* name of character set        */
+       cet_cs_alias_ibm865,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm865,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm865,            /* first non standard character */
+       cet_ucs4_cnt_ibm865,            /* number of values in table    */
+
+       cet_ucs4_to_ibm865_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm865_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm865_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 
+       0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, 
+       0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 
+       0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x0192, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 
+       0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x2205, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x2218, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm868.h b/gpsbabel/cet/ibm868.h
new file mode 100644 (file)
index 0000000..5d9ac27
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM868" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm868_h
+#define ibm868_h
+
+#define cet_cs_name_ibm868 "IBM868"
+
+const char *cet_cs_alias_ibm868[] = 
+{
+       "IBM868/CR-LF", "868/CR-LF", "CP868/CR-LF", "cp-ar",
+       NULL
+};
+
+#define cet_ucs4_ofs_ibm868 128
+#define cet_ucs4_cnt_ibm868 128
+
+const int cet_ucs4_map_ibm868[cet_ucs4_cnt_ibm868] =
+{
+       0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 
+       0x0668, 0x0669, 0x060c, 0x061b, 0x061f, 0x0622, 0x0627, 0xfe8e, 
+       0xe016, 0x0628, 0xfe91, 0x067e,     -1, 0x0629, 0x062a, 0xfe97, 
+           -1,     -1, 0x062b, 0xfe9b, 0x062c, 0xfe9f,     -1,     -1, 
+       0x062d, 0xfea3, 0x062e, 0xfea7, 0x062f,     -1, 0x0630, 0x0631, 
+           -1, 0x0632,     -1, 0x0633, 0xfeb3, 0x0634, 0x00ab, 0x00bb, 
+       0xfeb7, 0x0635, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0xfebb, 
+       0x0636, 0xfebf, 0x0637, 0x2563, 0x2551, 0x2557, 0x255d, 0x0638, 
+       0x0639, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 
+       0xfeca, 0xfecb, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 
+       0x256c, 0xfecc, 0x063a, 0xfece, 0xfecf, 0xfed0, 0x0641, 0xfed3, 
+       0x0642, 0xfed7, 0xfeda, 0x2518, 0x250c, 0x2588, 0x2580, 0xfedb, 
+           -1, 0x2584,     -1, 0x0644, 0xfede, 0xfee0, 0x0645, 0xfee3, 
+           -1, 0x0646, 0xfee7,     -1, 0x0648,     -1,     -1,     -1, 
+           -1, 0x0621, 0x00ad,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1, 0x0651, 0xfe7d,     -1, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm868_ct 103
+
+const cet_ucs4_link_t cet_ucs4_to_ibm868_links[cet_ucs4_to_ibm868_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ad, 0xf2} /* hyphen */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x060c, 0x8a} /* comma */,
+        {0x061b, 0x8b} /* semicolon */,
+        {0x061f, 0x8c} /* question mark */,
+        {0x0621, 0xf1} /* letter hamza */,
+        {0x0622, 0x8d} /* letter alef with madda above */,
+        {0x0627, 0x8e} /* letter alef */,
+        {0x0628, 0x91} /* letter beh */,
+        {0x0629, 0x95} /* letter teh marbuta */,
+        {0x062a, 0x96} /* letter teh */,
+        {0x062b, 0x9a} /* letter theh */,
+        {0x062c, 0x9c} /* letter jeem */,
+        {0x062d, 0xa0} /* letter hah */,
+        {0x062e, 0xa2} /* letter khah */,
+        {0x062f, 0xa4} /* letter dal */,
+        {0x0630, 0xa6} /* letter thal */,
+        {0x0631, 0xa7} /* letter reh */,
+        {0x0632, 0xa9} /* letter zain */,
+        {0x0633, 0xab} /* letter seen */,
+        {0x0634, 0xad} /* letter sheen */,
+        {0x0635, 0xb1} /* letter sad */,
+        {0x0636, 0xb8} /* letter dad */,
+        {0x0637, 0xba} /* letter tah */,
+        {0x0638, 0xbf} /* letter zah */,
+        {0x0639, 0xc0} /* letter ain */,
+        {0x063a, 0xd2} /* letter ghain */,
+        {0x0641, 0xd6} /* letter feh */,
+        {0x0642, 0xd8} /* letter qaf */,
+        {0x0644, 0xe3} /* letter lam */,
+        {0x0645, 0xe6} /* letter meem */,
+        {0x0646, 0xe9} /* letter noon */,
+        {0x0648, 0xec} /* letter waw */,
+        {0x0651, 0xfb} /* shadda */,
+        {0x0660, 0x80} /* arabic-indic digit zero */,
+        {0x0661, 0x81} /* arabic-indic digit one */,
+        {0x0662, 0x82} /* arabic-indic digit two */,
+        {0x0663, 0x83} /* arabic-indic digit three */,
+        {0x0664, 0x84} /* arabic-indic digit four */,
+        {0x0665, 0x85} /* arabic-indic digit five */,
+        {0x0666, 0x86} /* arabic-indic digit six */,
+        {0x0667, 0x87} /* arabic-indic digit seven */,
+        {0x0668, 0x88} /* arabic-indic digit eight */,
+        {0x0669, 0x89} /* arabic-indic digit nine */,
+        {0x067e, 0x93} /* letter peh */,
+        {0x2500, 0xc6} /* drawings light horizontal */,
+        {0x2502, 0xb5} /* drawings light vertical */,
+        {0x250c, 0xdc} /* drawings light down and right */,
+        {0x2510, 0xc1} /* drawings light down and left */,
+        {0x2514, 0xc2} /* drawings light up and right */,
+        {0x2518, 0xdb} /* drawings light up and left */,
+        {0x251c, 0xc5} /* drawings light vertical and right */,
+        {0x2524, 0xb6} /* drawings light vertical and left */,
+        {0x252c, 0xc4} /* drawings light down and horizontal */,
+        {0x2534, 0xc3} /* drawings light up and horizontal */,
+        {0x253c, 0xc7} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcf} /* drawings heavy horizontal */,
+        {0x2551, 0xbc} /* drawings heavy vertical */,
+        {0x2554, 0xcb} /* drawings heavy down and right */,
+        {0x2557, 0xbd} /* drawings heavy down and left */,
+        {0x255a, 0xca} /* drawings heavy up and right */,
+        {0x255d, 0xbe} /* drawings heavy up and left */,
+        {0x2560, 0xce} /* drawings heavy vertical and right */,
+        {0x2563, 0xbb} /* drawings heavy vertical and left */,
+        {0x2566, 0xcd} /* drawings heavy down and horizontal */,
+        {0x2569, 0xcc} /* drawings heavy up and horizontal */,
+        {0x256c, 0xd0} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xde} /* half block */,
+        {0x2584, 0xe1} /* half block */,
+        {0x2588, 0xdd} /* block */,
+        {0x2591, 0xb2} /* shade */,
+        {0x2592, 0xb3} /* shade */,
+        {0x2593, 0xb4} /* shade */,
+        {0x25a0, 0xfe} /* square */,
+        {0xe016, 0x90} /* letter alef final form compatibility (ibm868 144) */,
+        {0xfe7d, 0xfc} /* shadda medial form */,
+        {0xfe8e, 0x8f} /* letter alef final form */,
+        {0xfe91, 0x92} /* letter beh initial form */,
+        {0xfe97, 0x97} /* letter teh initial form */,
+        {0xfe9b, 0x9b} /* letter theh initial form */,
+        {0xfe9f, 0x9d} /* letter jeem initial form */,
+        {0xfea3, 0xa1} /* letter hah initial form */,
+        {0xfea7, 0xa3} /* letter khah initial form */,
+        {0xfeb3, 0xac} /* letter seen initial form */,
+        {0xfeb7, 0xb0} /* letter sheen initial form */,
+        {0xfebb, 0xb7} /* letter sad initial form */,
+        {0xfebf, 0xb9} /* letter dad initial form */,
+        {0xfeca, 0xc8} /* letter ain final form */,
+        {0xfecb, 0xc9} /* letter ain initial form */,
+        {0xfecc, 0xd1} /* letter ain medial form */,
+        {0xfece, 0xd3} /* letter ghain final form */,
+        {0xfecf, 0xd4} /* letter ghain initial form */,
+        {0xfed0, 0xd5} /* letter ghain medial form */,
+        {0xfed3, 0xd7} /* letter feh initial form */,
+        {0xfed7, 0xd9} /* letter qaf initial form */,
+        {0xfeda, 0xda} /* letter kaf final form */,
+        {0xfedb, 0xdf} /* letter kaf initial form */,
+        {0xfede, 0xe4} /* letter lam final form */,
+        {0xfee0, 0xe5} /* letter lam medial form */,
+        {0xfee3, 0xe7} /* letter meem initial form */,
+        {0xfee7, 0xea} /* letter noon initial form */
+};
+
+/*
+#define cet_ucs4_to_ibm868_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm868_extra[cet_ucs4_to_ibm868_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm868 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm868,             /* name of character set        */
+       cet_cs_alias_ibm868,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm868,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm868,            /* first non standard character */
+       cet_ucs4_cnt_ibm868,            /* number of values in table    */
+
+       cet_ucs4_to_ibm868_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm868_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm868_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 
+       0x0668, 0x0669, 0x060c, 0x061b, 0x061f, 0x0622, 0x0627, 0xfe8e, 
+       0xe016, 0x0628, 0xfe91, 0x067e,     -1, 0x0629, 0x062a, 0xfe97, 
+           -1,     -1, 0x062b, 0xfe9b, 0x062c, 0xfe9f,     -1,     -1, 
+       0x062d, 0xfea3, 0x062e, 0xfea7, 0x062f,     -1, 0x0630, 0x0631, 
+           -1, 0x0632,     -1, 0x0633, 0xfeb3, 0x0634, 0x00ab, 0x00bb, 
+       0xfeb7, 0x0635, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0xfebb, 
+       0x0636, 0xfebf, 0x0637, 0x2563, 0x2551, 0x2557, 0x255d, 0x0638, 
+       0x0639, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 
+       0xfeca, 0xfecb, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 
+       0x256c, 0xfecc, 0x063a, 0xfece, 0xfecf, 0xfed0, 0x0641, 0xfed3, 
+       0x0642, 0xfed7, 0xfeda, 0x2518, 0x250c, 0x2588, 0x2580, 0xfedb, 
+           -1, 0x2584,     -1, 0x0644, 0xfede, 0xfee0, 0x0645, 0xfee3, 
+           -1, 0x0646, 0xfee7,     -1, 0x0648,     -1,     -1,     -1, 
+           -1, 0x0621, 0x00ad,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1, 0x0651, 0xfe7d,     -1, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm869.h b/gpsbabel/cet/ibm869.h
new file mode 100644 (file)
index 0000000..fe23160
--- /dev/null
@@ -0,0 +1,248 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM869" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm869_h
+#define ibm869_h
+
+#define cet_cs_name_ibm869 "IBM869"
+
+const char *cet_cs_alias_ibm869[] = 
+{
+       "IBM869/CR-LF", "869/CR-LF", "CP869/CR-LF", "cp-gr",
+       NULL
+};
+
+#define cet_ucs4_ofs_ibm869 128
+#define cet_ucs4_cnt_ibm869 128
+
+const int cet_ucs4_map_ibm869[cet_ucs4_cnt_ibm869] =
+{
+           -1,     -1,     -1,     -1,     -1,     -1, 0x0386,     -1, 
+       0x00b7, 0x00ac, 0x00a6, 0x201b, 0x2019, 0x0388, 0x2014, 0x0389, 
+       0x038a, 0x03aa, 0x038c,     -1,     -1, 0x038e, 0x03ab, 0x00a9, 
+       0x038f, 0x00b2, 0x00b3, 0x03ac, 0x00a3, 0x03ad, 0x03ae, 0x03af, 
+       0x03ca, 0x0390, 0x03cc, 0x03cd, 0x0391, 0x0392, 0x0393, 0x0394, 
+       0x0395, 0x0396, 0x0397, 0x00bd, 0x0398, 0x0399, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039a, 0x039b, 0x039c, 
+       0x039d, 0x2563, 0x2551, 0x2557, 0x255d, 0x039e, 0x039f, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x03a0, 0x03a1, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x03a3, 
+       0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 
+       0x03b3, 0x2518, 0x250c, 0x2588, 0x2584, 0x03b4, 0x03b5, 0x2580, 
+       0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 
+       0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x00b4, 
+       0x00ad, 0x00b1, 0x03c5, 0x03c6, 0x03c7, 0x00a7, 0x03c8, 0x0385, 
+       0x00b0, 0x00a8, 0x03c9, 0x03cb, 0x03b0, 0x03ce, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_ibm869_ct 119
+
+const cet_ucs4_link_t cet_ucs4_to_ibm869_links[cet_ucs4_to_ibm869_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a3, 0x9c} /* sign */,
+        {0x00a6, 0x8a} /* bar */,
+        {0x00a7, 0xf5} /* sign */,
+        {0x00a8, 0xf9} /* diaeresis */,
+        {0x00a9, 0x97} /* sign */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00ac, 0x89} /* sign */,
+        {0x00ad, 0xf0} /* hyphen */,
+        {0x00b0, 0xf8} /* sign */,
+        {0x00b1, 0xf1} /* sign */,
+        {0x00b2, 0x99} /* two */,
+        {0x00b3, 0x9a} /* three */,
+        {0x00b4, 0xef} /* accent */,
+        {0x00b7, 0x88} /* dot */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00bd, 0xab} /* fraction one half */,
+        {0x0385, 0xf7} /* accent and diaeresis (tonos and dialytika) */,
+        {0x0386, 0x86} /* capital letter alpha with acute */,
+        {0x0388, 0x8d} /* capital letter epsilon with acute */,
+        {0x0389, 0x8f} /* capital letter eta with acute */,
+        {0x038a, 0x90} /* capital letter iota with acute */,
+        {0x038c, 0x92} /* capital letter omicron with acute */,
+        {0x038e, 0x95} /* capital letter upsilon with acute */,
+        {0x038f, 0x98} /* capital letter omega with acute */,
+        {0x0390, 0xa1} /* small letter iota with acute and diaeresis */,
+        {0x0391, 0xa4} /* capital letter alpha */,
+        {0x0392, 0xa5} /* capital letter beta */,
+        {0x0393, 0xa6} /* capital letter gamma */,
+        {0x0394, 0xa7} /* capital letter delta */,
+        {0x0395, 0xa8} /* capital letter epsilon */,
+        {0x0396, 0xa9} /* capital letter zeta */,
+        {0x0397, 0xaa} /* capital letter eta */,
+        {0x0398, 0xac} /* capital letter theta */,
+        {0x0399, 0xad} /* capital letter iota */,
+        {0x039a, 0xb5} /* capital letter kappa */,
+        {0x039b, 0xb6} /* capital letter lamda */,
+        {0x039c, 0xb7} /* capital letter mu */,
+        {0x039d, 0xb8} /* capital letter nu */,
+        {0x039e, 0xbd} /* capital letter xi */,
+        {0x039f, 0xbe} /* capital letter omicron */,
+        {0x03a0, 0xc6} /* capital letter pi */,
+        {0x03a1, 0xc7} /* capital letter rho */,
+        {0x03a3, 0xcf} /* capital letter sigma */,
+        {0x03a4, 0xd0} /* capital letter tau */,
+        {0x03a5, 0xd1} /* capital letter upsilon */,
+        {0x03a6, 0xd2} /* capital letter phi */,
+        {0x03a7, 0xd3} /* capital letter chi */,
+        {0x03a8, 0xd4} /* capital letter psi */,
+        {0x03a9, 0xd5} /* capital letter omega */,
+        {0x03aa, 0x91} /* capital letter iota with diaeresis */,
+        {0x03ab, 0x96} /* capital letter upsilon with diaeresis */,
+        {0x03ac, 0x9b} /* small letter alpha with acute */,
+        {0x03ad, 0x9d} /* small letter epsilon with acute */,
+        {0x03ae, 0x9e} /* small letter eta with acute */,
+        {0x03af, 0x9f} /* small letter iota with acute */,
+        {0x03b0, 0xfc} /* small letter upsilon with acute and diaeresis */,
+        {0x03b1, 0xd6} /* small letter alpha */,
+        {0x03b2, 0xd7} /* small letter beta */,
+        {0x03b3, 0xd8} /* small letter gamma */,
+        {0x03b4, 0xdd} /* small letter delta */,
+        {0x03b5, 0xde} /* small letter epsilon */,
+        {0x03b6, 0xe0} /* small letter zeta */,
+        {0x03b7, 0xe1} /* small letter eta */,
+        {0x03b8, 0xe2} /* small letter theta */,
+        {0x03b9, 0xe3} /* small letter iota */,
+        {0x03ba, 0xe4} /* small letter kappa */,
+        {0x03bb, 0xe5} /* small letter lamda */,
+        {0x03bc, 0xe6} /* small letter mu */,
+        {0x03bd, 0xe7} /* small letter nu */,
+        {0x03be, 0xe8} /* small letter xi */,
+        {0x03bf, 0xe9} /* small letter omicron */,
+        {0x03c0, 0xea} /* small letter pi */,
+        {0x03c1, 0xeb} /* small letter rho */,
+        {0x03c2, 0xed} /* small letter final sigma */,
+        {0x03c3, 0xec} /* small letter sigma */,
+        {0x03c4, 0xee} /* small letter tau */,
+        {0x03c5, 0xf2} /* small letter upsilon */,
+        {0x03c6, 0xf3} /* small letter phi */,
+        {0x03c7, 0xf4} /* small letter chi */,
+        {0x03c8, 0xf6} /* small letter psi */,
+        {0x03c9, 0xfa} /* small letter omega */,
+        {0x03ca, 0xa0} /* small letter iota with diaeresis */,
+        {0x03cb, 0xfb} /* small letter upsilon with diaeresis */,
+        {0x03cc, 0xa2} /* small letter omicron with acute */,
+        {0x03cd, 0xa3} /* small letter upsilon with acute */,
+        {0x03ce, 0xfd} /* small letter omega with acute */,
+        {0x2014, 0x8e} /* dash */,
+        {0x2019, 0x8c} /* single quotation mark */,
+        {0x201b, 0x8b} /* high-reversed-9 quotation mark */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */
+};
+
+/*
+#define cet_ucs4_to_ibm869_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm869_extra[cet_ucs4_to_ibm869_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm869 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm869,             /* name of character set        */
+       cet_cs_alias_ibm869,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm869,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm869,            /* first non standard character */
+       cet_ucs4_cnt_ibm869,            /* number of values in table    */
+
+       cet_ucs4_to_ibm869_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm869_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm869_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1, 0x0386,     -1, 
+       0x00b7, 0x00ac, 0x00a6, 0x201b, 0x2019, 0x0388, 0x2014, 0x0389, 
+       0x038a, 0x03aa, 0x038c,     -1,     -1, 0x038e, 0x03ab, 0x00a9, 
+       0x038f, 0x00b2, 0x00b3, 0x03ac, 0x00a3, 0x03ad, 0x03ae, 0x03af, 
+       0x03ca, 0x0390, 0x03cc, 0x03cd, 0x0391, 0x0392, 0x0393, 0x0394, 
+       0x0395, 0x0396, 0x0397, 0x00bd, 0x0398, 0x0399, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039a, 0x039b, 0x039c, 
+       0x039d, 0x2563, 0x2551, 0x2557, 0x255d, 0x039e, 0x039f, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x03a0, 0x03a1, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x03a3, 
+       0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 
+       0x03b3, 0x2518, 0x250c, 0x2588, 0x2584, 0x03b4, 0x03b5, 0x2580, 
+       0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 
+       0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x00b4, 
+       0x00ad, 0x00b1, 0x03c5, 0x03c6, 0x03c7, 0x00a7, 0x03c8, 0x0385, 
+       0x00b0, 0x00a8, 0x03c9, 0x03cb, 0x03b0, 0x03ce, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm871.h b/gpsbabel/cet/ibm871.h
new file mode 100644 (file)
index 0000000..5edc574
--- /dev/null
@@ -0,0 +1,381 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM871" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm871_h
+#define ibm871_h
+
+#define cet_cs_name_ibm871 "IBM871"
+
+const char *cet_cs_alias_ibm871[] = 
+{
+       "IBM871/CR-LF", "871/CR-LF", "CP871/CR-LF", "ebcdic-cp-is",
+       NULL
+};
+
+#define cet_ucs4_ofs_ibm871 4
+#define cet_ucs4_cnt_ibm871 252
+
+const int cet_ucs4_map_ibm871[cet_ucs4_cnt_ibm871] =
+{
+       0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 
+       0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 
+       0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 
+       0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 
+       0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00fe, 0x002e, 
+       0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 
+       0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00c6, 0x0024, 
+       0x002a, 0x0029, 0x003b, 0x00d6, 0x002d, 0x002f, 0x00c2, 0x00c4, 
+       0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 
+       0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00f0, 0x003a, 0x0023, 
+       0x00d0, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 
+       0x0060, 0x00fd, 0x007b, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 
+       0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 
+       0x007d, 0x00b8, 0x005d, 0x00a4, 0x00b5, 0x00f6, 0x0073, 0x0074, 
+       0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 
+       0x0040, 0x00dd, 0x005b, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 
+       0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 
+       0x00af, 0x00a8, 0x005c, 0x00d7, 0x00de, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 
+       0x007e, 0x00f2, 0x00f3, 0x00f5, 0x00e6, 0x004a, 0x004b, 0x004c, 
+       0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 
+       0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x00b4, 0x00f7, 0x0053, 0x0054, 
+       0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 
+       0x005e, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 
+       0x00dc, 0x00d9, 0x00da, 0x009f
+};
+
+#define cet_ucs4_to_ibm871_ct 236
+
+const cet_ucs4_link_t cet_ucs4_to_ibm871_links[cet_ucs4_to_ibm871_ct] =
+{
+        {0x0004, 0x37} /* of transmission (eot) */,
+        {0x0005, 0x2d} /* (enq) */,
+        {0x0006, 0x2e} /* (ack) */,
+        {0x0007, 0x2f} /* (bel) */,
+        {0x0008, 0x16} /* (bs) */,
+        {0x0009, 0x05} /* tabulation (ht) */,
+        {0x000a, 0x25} /* feed (lf) */,
+        {0x0014, 0x3c} /* control four (dc4) */,
+        {0x0015, 0x3d} /* acknowledge (nak) */,
+        {0x0016, 0x32} /* idle (syn) */,
+        {0x0017, 0x26} /* of transmission block (etb) */,
+        {0x001a, 0x3f} /* (sub) */,
+        {0x001b, 0x27} /* (esc) */,
+        {0x0020, 0x40} /* space */,
+        {0x0021, 0x4f} /* mark */,
+        {0x0022, 0x7f} /* mark */,
+        {0x0023, 0x7b} /* sign */,
+        {0x0024, 0x5b} /* sign */,
+        {0x0025, 0x6c} /* sign */,
+        {0x0026, 0x50} /* ampersand */,
+        {0x0027, 0x7d} /* apostrophe */,
+        {0x0028, 0x4d} /* parenthesis */,
+        {0x0029, 0x5d} /* parenthesis */,
+        {0x002a, 0x5c} /* asterisk */,
+        {0x002b, 0x4e} /* sign */,
+        {0x002c, 0x6b} /* comma */,
+        {0x002d, 0x60} /* hyphen-minus */,
+        {0x002e, 0x4b} /* stop */,
+        {0x002f, 0x61} /* solidus */,
+        {0x0030, 0xf0} /* zero */,
+        {0x0031, 0xf1} /* one */,
+        {0x0032, 0xf2} /* two */,
+        {0x0033, 0xf3} /* three */,
+        {0x0034, 0xf4} /* four */,
+        {0x0035, 0xf5} /* five */,
+        {0x0036, 0xf6} /* six */,
+        {0x0037, 0xf7} /* seven */,
+        {0x0038, 0xf8} /* eight */,
+        {0x0039, 0xf9} /* nine */,
+        {0x003a, 0x7a} /* colon */,
+        {0x003b, 0x5e} /* semicolon */,
+        {0x003c, 0x4c} /* sign */,
+        {0x003d, 0x7e} /* sign */,
+        {0x003e, 0x6e} /* sign */,
+        {0x003f, 0x6f} /* mark */,
+        {0x0040, 0xac} /* at */,
+        {0x0041, 0xc1} /* capital letter a */,
+        {0x0042, 0xc2} /* capital letter b */,
+        {0x0043, 0xc3} /* capital letter c */,
+        {0x0044, 0xc4} /* capital letter d */,
+        {0x0045, 0xc5} /* capital letter e */,
+        {0x0046, 0xc6} /* capital letter f */,
+        {0x0047, 0xc7} /* capital letter g */,
+        {0x0048, 0xc8} /* capital letter h */,
+        {0x0049, 0xc9} /* capital letter i */,
+        {0x004a, 0xd1} /* capital letter j */,
+        {0x004b, 0xd2} /* capital letter k */,
+        {0x004c, 0xd3} /* capital letter l */,
+        {0x004d, 0xd4} /* capital letter m */,
+        {0x004e, 0xd5} /* capital letter n */,
+        {0x004f, 0xd6} /* capital letter o */,
+        {0x0050, 0xd7} /* capital letter p */,
+        {0x0051, 0xd8} /* capital letter q */,
+        {0x0052, 0xd9} /* capital letter r */,
+        {0x0053, 0xe2} /* capital letter s */,
+        {0x0054, 0xe3} /* capital letter t */,
+        {0x0055, 0xe4} /* capital letter u */,
+        {0x0056, 0xe5} /* capital letter v */,
+        {0x0057, 0xe6} /* capital letter w */,
+        {0x0058, 0xe7} /* capital letter x */,
+        {0x0059, 0xe8} /* capital letter y */,
+        {0x005a, 0xe9} /* capital letter z */,
+        {0x005b, 0xae} /* square bracket */,
+        {0x005c, 0xbe} /* solidus */,
+        {0x005d, 0x9e} /* square bracket */,
+        {0x005e, 0xec} /* accent */,
+        {0x005f, 0x6d} /* line */,
+        {0x0060, 0x8c} /* accent */,
+        {0x0061, 0x81} /* small letter a */,
+        {0x0062, 0x82} /* small letter b */,
+        {0x0063, 0x83} /* small letter c */,
+        {0x0064, 0x84} /* small letter d */,
+        {0x0065, 0x85} /* small letter e */,
+        {0x0066, 0x86} /* small letter f */,
+        {0x0067, 0x87} /* small letter g */,
+        {0x0068, 0x88} /* small letter h */,
+        {0x0069, 0x89} /* small letter i */,
+        {0x006a, 0x91} /* small letter j */,
+        {0x006b, 0x92} /* small letter k */,
+        {0x006c, 0x93} /* small letter l */,
+        {0x006d, 0x94} /* small letter m */,
+        {0x006e, 0x95} /* small letter n */,
+        {0x006f, 0x96} /* small letter o */,
+        {0x0070, 0x97} /* small letter p */,
+        {0x0071, 0x98} /* small letter q */,
+        {0x0072, 0x99} /* small letter r */,
+        {0x0073, 0xa2} /* small letter s */,
+        {0x0074, 0xa3} /* small letter t */,
+        {0x0075, 0xa4} /* small letter u */,
+        {0x0076, 0xa5} /* small letter v */,
+        {0x0077, 0xa6} /* small letter w */,
+        {0x0078, 0xa7} /* small letter x */,
+        {0x0079, 0xa8} /* small letter y */,
+        {0x007a, 0xa9} /* small letter z */,
+        {0x007b, 0x8e} /* curly bracket */,
+        {0x007c, 0xbb} /* line */,
+        {0x007d, 0x9c} /* curly bracket */,
+        {0x007e, 0xcc} /* tilde */,
+        {0x007f, 0x07} /* (del) */,
+        {0x0080, 0x20} /* character (pad) */,
+        {0x0081, 0x21} /* octet preset (hop) */,
+        {0x0082, 0x22} /* permitted here (bph) */,
+        {0x0083, 0x23} /* break here (nbh) */,
+        {0x0084, 0x24} /* (ind) */,
+        {0x0085, 0x15} /* line (nel) */,
+        {0x0086, 0x06} /* of selected area (ssa) */,
+        {0x0087, 0x17} /* of selected area (esa) */,
+        {0x0088, 0x28} /* tabulation set (hts) */,
+        {0x0089, 0x29} /* tabulation with justification (htj) */,
+        {0x008a, 0x2a} /* tabulation set (vts) */,
+        {0x008b, 0x2b} /* line forward (pld) */,
+        {0x008c, 0x2c} /* line backward (plu) */,
+        {0x008d, 0x09} /* line feed (ri) */,
+        {0x008e, 0x0a} /* two (ss2) */,
+        {0x008f, 0x1b} /* three (ss3) */,
+        {0x0090, 0x30} /* control string (dcs) */,
+        {0x0091, 0x31} /* use one (pu1) */,
+        {0x0092, 0x1a} /* use two (pu2) */,
+        {0x0093, 0x33} /* transmit state (sts) */,
+        {0x0094, 0x34} /* character (cch) */,
+        {0x0095, 0x35} /* waiting (mw) */,
+        {0x0096, 0x36} /* of guarded area (spa) */,
+        {0x0097, 0x08} /* of guarded area (epa) */,
+        {0x0098, 0x38} /* of string (sos) */,
+        {0x0099, 0x39} /* graphic character introducer (sgci) */,
+        {0x009a, 0x3a} /* character introducer (sci) */,
+        {0x009b, 0x3b} /* sequence introducer (csi) */,
+        {0x009c, 0x04} /* terminator (st) */,
+        {0x009d, 0x14} /* system command (osc) */,
+        {0x009e, 0x3e} /* message (pm) */,
+        {0x009f, 0xff} /* program command (apc) */,
+        {0x00a0, 0x41} /* space */,
+        {0x00a1, 0xaa} /* exclamation mark */,
+        {0x00a2, 0xb0} /* sign */,
+        {0x00a3, 0xb1} /* sign */,
+        {0x00a4, 0x9f} /* sign */,
+        {0x00a5, 0xb2} /* sign */,
+        {0x00a6, 0x6a} /* bar */,
+        {0x00a7, 0xb5} /* sign */,
+        {0x00a8, 0xbd} /* diaeresis */,
+        {0x00a9, 0xb4} /* sign */,
+        {0x00aa, 0x9a} /* ordinal indicator */,
+        {0x00ab, 0x8a} /* double angle quotation mark */,
+        {0x00ac, 0xba} /* sign */,
+        {0x00ad, 0xca} /* hyphen */,
+        {0x00ae, 0xaf} /* sign */,
+        {0x00af, 0xbc} /* macron */,
+        {0x00b0, 0x90} /* sign */,
+        {0x00b1, 0x8f} /* sign */,
+        {0x00b2, 0xea} /* two */,
+        {0x00b3, 0xfa} /* three */,
+        {0x00b4, 0xe0} /* accent */,
+        {0x00b5, 0xa0} /* sign */,
+        {0x00b7, 0xb3} /* dot */,
+        {0x00b8, 0x9d} /* cedilla */,
+        {0x00b9, 0xda} /* one */,
+        {0x00ba, 0x9b} /* ordinal indicator */,
+        {0x00bb, 0x8b} /* double angle quotation mark */,
+        {0x00bc, 0xb7} /* fraction one quarter */,
+        {0x00bd, 0xb8} /* fraction one half */,
+        {0x00be, 0xb9} /* fraction three quarters */,
+        {0x00bf, 0xab} /* question mark */,
+        {0x00c0, 0x64} /* capital letter a with grave */,
+        {0x00c1, 0x65} /* capital letter a with acute */,
+        {0x00c2, 0x62} /* capital letter a with circumflex */,
+        {0x00c3, 0x66} /* capital letter a with tilde */,
+        {0x00c4, 0x63} /* capital letter a with diaeresis */,
+        {0x00c5, 0x67} /* capital letter a with ring above */,
+        {0x00c6, 0x5a} /* capital letter ae */,
+        {0x00c7, 0x68} /* capital letter c with cedilla */,
+        {0x00c8, 0x74} /* capital letter e with grave */,
+        {0x00c9, 0x71} /* capital letter e with acute */,
+        {0x00ca, 0x72} /* capital letter e with circumflex */,
+        {0x00cb, 0x73} /* capital letter e with diaeresis */,
+        {0x00cc, 0x78} /* capital letter i with grave */,
+        {0x00cd, 0x75} /* capital letter i with acute */,
+        {0x00ce, 0x76} /* capital letter i with circumflex */,
+        {0x00cf, 0x77} /* capital letter i with diaeresis */,
+        {0x00d0, 0x7c} /* capital letter eth (icelandic) */,
+        {0x00d1, 0x69} /* capital letter n with tilde */,
+        {0x00d2, 0xed} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xeb} /* capital letter o with circumflex */,
+        {0x00d5, 0xef} /* capital letter o with tilde */,
+        {0x00d6, 0x5f} /* capital letter o with diaeresis */,
+        {0x00d7, 0xbf} /* sign */,
+        {0x00d8, 0x80} /* capital letter o with stroke */,
+        {0x00d9, 0xfd} /* capital letter u with grave */,
+        {0x00da, 0xfe} /* capital letter u with acute */,
+        {0x00db, 0xfb} /* capital letter u with circumflex */,
+        {0x00dc, 0xfc} /* capital letter u with diaeresis */,
+        {0x00dd, 0xad} /* capital letter y with acute */,
+        {0x00de, 0xc0} /* capital letter thorn (icelandic) */,
+        {0x00df, 0x59} /* small letter sharp s (german) */,
+        {0x00e0, 0x44} /* small letter a with grave */,
+        {0x00e1, 0x45} /* small letter a with acute */,
+        {0x00e2, 0x42} /* small letter a with circumflex */,
+        {0x00e3, 0x46} /* small letter a with tilde */,
+        {0x00e4, 0x43} /* small letter a with diaeresis */,
+        {0x00e5, 0x47} /* small letter a with ring above */,
+        {0x00e6, 0xd0} /* small letter ae */,
+        {0x00e7, 0x48} /* small letter c with cedilla */,
+        {0x00e8, 0x54} /* small letter e with grave */,
+        {0x00e9, 0x51} /* small letter e with acute */,
+        {0x00ea, 0x52} /* small letter e with circumflex */,
+        {0x00eb, 0x53} /* small letter e with diaeresis */,
+        {0x00ec, 0x58} /* small letter i with grave */,
+        {0x00ed, 0x55} /* small letter i with acute */,
+        {0x00ee, 0x56} /* small letter i with circumflex */,
+        {0x00ef, 0x57} /* small letter i with diaeresis */,
+        {0x00f0, 0x79} /* small letter eth (icelandic) */,
+        {0x00f1, 0x49} /* small letter n with tilde */,
+        {0x00f2, 0xcd} /* small letter o with grave */,
+        {0x00f3, 0xce} /* small letter o with acute */,
+        {0x00f4, 0xcb} /* small letter o with circumflex */,
+        {0x00f5, 0xcf} /* small letter o with tilde */,
+        {0x00f6, 0xa1} /* small letter o with diaeresis */,
+        {0x00f7, 0xe1} /* sign */,
+        {0x00f8, 0x70} /* small letter o with stroke */,
+        {0x00f9, 0xdd} /* small letter u with grave */,
+        {0x00fa, 0xde} /* small letter u with acute */,
+        {0x00fb, 0xdb} /* small letter u with circumflex */,
+        {0x00fc, 0xdc} /* small letter u with diaeresis */,
+        {0x00fd, 0x8d} /* small letter y with acute */,
+        {0x00fe, 0x4a} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xdf} /* small letter y with diaeresis */
+};
+
+/*
+#define cet_ucs4_to_ibm871_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm871_extra[cet_ucs4_to_ibm871_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm871 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm871,             /* name of character set        */
+       cet_cs_alias_ibm871,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm871,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm871,            /* first non standard character */
+       cet_ucs4_cnt_ibm871,            /* number of values in table    */
+
+       cet_ucs4_to_ibm871_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm871_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm871_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 
+       0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 
+       0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 
+       0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 
+       0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 
+       0x00e7, 0x00f1, 0x00fe, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 
+       0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 
+       0x00ec, 0x00df, 0x00c6, 0x0024, 0x002a, 0x0029, 0x003b, 0x00d6, 
+       0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 
+       0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 
+       0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 
+       0x00cc, 0x00f0, 0x003a, 0x0023, 0x00d0, 0x0027, 0x003d, 0x0022, 
+       0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x00ab, 0x00bb, 0x0060, 0x00fd, 0x007b, 0x00b1, 
+       0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x00aa, 0x00ba, 0x007d, 0x00b8, 0x005d, 0x00a4, 
+       0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x00a1, 0x00bf, 0x0040, 0x00dd, 0x005b, 0x00ae, 
+       0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 
+       0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x005c, 0x00d7, 
+       0x00de, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x00f5, 
+       0x00e6, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 
+       0x00b4, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x00b2, 0x00d4, 0x005e, 0x00d2, 0x00d3, 0x00d5, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm891.h b/gpsbabel/cet/ibm891.h
new file mode 100644 (file)
index 0000000..0857712
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM891" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm891_h
+#define ibm891_h
+
+#define cet_cs_name_ibm891 "IBM891"
+
+const char *cet_cs_alias_ibm891[] = 
+{
+       "IBM891/CR-LF", "891/CR-LF", "CP891/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm891 128
+#define cet_ucs4_cnt_ibm891 0
+
+const int cet_ucs4_map_ibm891[cet_ucs4_cnt_ibm891] =
+{
+};
+
+#define cet_ucs4_to_ibm891_ct 0
+
+const cet_ucs4_link_t cet_ucs4_to_ibm891_links[cet_ucs4_to_ibm891_ct] =
+{
+};
+
+/*
+#define cet_ucs4_to_ibm891_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm891_extra[cet_ucs4_to_ibm891_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm891 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm891,             /* name of character set        */
+       cet_cs_alias_ibm891,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm891,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm891,            /* first non standard character */
+       cet_ucs4_cnt_ibm891,            /* number of values in table    */
+
+       cet_ucs4_to_ibm891_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm891_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm891_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm903.h b/gpsbabel/cet/ibm903.h
new file mode 100644 (file)
index 0000000..28b9d2e
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM903" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm903_h
+#define ibm903_h
+
+#define cet_cs_name_ibm903 "IBM903"
+
+const char *cet_cs_alias_ibm903[] = 
+{
+       "IBM903/CR-LF", "903/CR-LF", "CP903/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm903 128
+#define cet_ucs4_cnt_ibm903 0
+
+const int cet_ucs4_map_ibm903[cet_ucs4_cnt_ibm903] =
+{
+};
+
+#define cet_ucs4_to_ibm903_ct 0
+
+const cet_ucs4_link_t cet_ucs4_to_ibm903_links[cet_ucs4_to_ibm903_ct] =
+{
+};
+
+/*
+#define cet_ucs4_to_ibm903_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm903_extra[cet_ucs4_to_ibm903_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm903 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm903,             /* name of character set        */
+       cet_cs_alias_ibm903,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm903,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm903,            /* first non standard character */
+       cet_ucs4_cnt_ibm903,            /* number of values in table    */
+
+       cet_ucs4_to_ibm903_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm903_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm903_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ibm904.h b/gpsbabel/cet/ibm904.h
new file mode 100644 (file)
index 0000000..fdd5207
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IBM904" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ibm904_h
+#define ibm904_h
+
+#define cet_cs_name_ibm904 "IBM904"
+
+const char *cet_cs_alias_ibm904[] = 
+{
+       "IBM904/CR-LF", "904/CR-LF", "CP904/CR-LF", NULL
+};
+
+#define cet_ucs4_ofs_ibm904 128
+#define cet_ucs4_cnt_ibm904 127
+
+const int cet_ucs4_map_ibm904[cet_ucs4_cnt_ibm904] =
+{
+       0x00a2,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1, 0x00ac, 0x00a6
+};
+
+#define cet_ucs4_to_ibm904_ct 3
+
+const cet_ucs4_link_t cet_ucs4_to_ibm904_links[cet_ucs4_to_ibm904_ct] =
+{
+        {0x00a2, 0x80} /* sign */,
+        {0x00a6, 0xfe} /* bar */,
+        {0x00ac, 0xfd} /* sign */
+};
+
+/*
+#define cet_ucs4_to_ibm904_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ibm904_extra[cet_ucs4_to_ibm904_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ibm904 =       /* defined in cet.h */
+{      
+       cet_cs_name_ibm904,             /* name of character set        */
+       cet_cs_alias_ibm904,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ibm904,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ibm904,            /* first non standard character */
+       cet_ucs4_cnt_ibm904,            /* number of values in table    */
+
+       cet_ucs4_to_ibm904_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_ibm904_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ibm904_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00a2,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1, 0x00ac, 0x00a6,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iec_p27_1.h b/gpsbabel/cet/iec_p27_1.h
new file mode 100644 (file)
index 0000000..44ba106
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IEC_P27-1" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iec_p27_1_h
+#define iec_p27_1_h
+
+#define cet_cs_name_iec_p27_1 "IEC_P27-1"
+
+const char *cet_cs_alias_iec_p27_1[] = 
+{
+       "IEC_P27-1", "iso-ir-143", NULL
+};
+
+#define cet_ucs4_ofs_iec_p27_1 160
+#define cet_ucs4_cnt_iec_p27_1 96
+
+const int cet_ucs4_map_iec_p27_1[cet_ucs4_cnt_iec_p27_1] =
+{
+       0x02c7, 0x2261, 0x2227, 0x2228, 0x2229, 0x222a, 0x2282, 0x2283, 
+       0x21d0, 0x21d2, 0x2234, 0x2235, 0x2208, 0x220b, 0x2286, 0x2287, 
+       0x222b, 0x222e, 0x221e, 0x2207, 0x2202, 0x223c, 0x2248, 0x2243, 
+       0x2245, 0x2264, 0x2260, 0x2265, 0x2194, 0x00ac, 0x2200, 0x2203, 
+       0x05d0, 0x25a1, 0x2225, 0x0393, 0x0394, 0x22a5, 0x2220, 0x221f, 
+       0x0398, 0x2329, 0x232a, 0x039b, 0x2032, 0x2033, 0x039e, 0x2213, 
+       0x03a0, 0x00b2, 0x03a3, 0x00d7, 0x00b3, 0x03a5, 0x03a6, 0x00b7, 
+       0x03a8, 0x03a9, 0x2205, 0x21c0, 0x221a, 0x0192, 0x221d, 0x00b1, 
+       0x00b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 
+       0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x2030, 
+       0x03c0, 0x03c1, 0x03c3, 0x00f7, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 
+       0x03c8, 0x03c9, 0x2020, 0x2190, 0x2191, 0x2192, 0x2193, 0x203e
+};
+
+#define cet_ucs4_to_iec_p27_1_ct 96
+
+const cet_ucs4_link_t cet_ucs4_to_iec_p27_1_links[cet_ucs4_to_iec_p27_1_ct] =
+{
+        {0x00ac, 0xbd} /* sign */,
+        {0x00b0, 0xe0} /* sign */,
+        {0x00b1, 0xdf} /* sign */,
+        {0x00b2, 0xd1} /* two */,
+        {0x00b3, 0xd4} /* three */,
+        {0x00b7, 0xd7} /* dot */,
+        {0x00d7, 0xd3} /* sign */,
+        {0x00f7, 0xf3} /* sign */,
+        {0x0192, 0xdd} /* minuscule latine f hameçon */,
+        {0x02c7, 0xa0} /* caron */,
+        {0x0393, 0xc3} /* capital letter gamma */,
+        {0x0394, 0xc4} /* capital letter delta */,
+        {0x0398, 0xc8} /* capital letter theta */,
+        {0x039b, 0xcb} /* capital letter lamda */,
+        {0x039e, 0xce} /* capital letter xi */,
+        {0x03a0, 0xd0} /* capital letter pi */,
+        {0x03a3, 0xd2} /* capital letter sigma */,
+        {0x03a5, 0xd5} /* capital letter upsilon */,
+        {0x03a6, 0xd6} /* capital letter phi */,
+        {0x03a8, 0xd8} /* capital letter psi */,
+        {0x03a9, 0xd9} /* capital letter omega */,
+        {0x03b1, 0xe1} /* small letter alpha */,
+        {0x03b2, 0xe2} /* small letter beta */,
+        {0x03b3, 0xe3} /* small letter gamma */,
+        {0x03b4, 0xe4} /* small letter delta */,
+        {0x03b5, 0xe5} /* small letter epsilon */,
+        {0x03b6, 0xe6} /* small letter zeta */,
+        {0x03b7, 0xe7} /* small letter eta */,
+        {0x03b8, 0xe8} /* small letter theta */,
+        {0x03b9, 0xe9} /* small letter iota */,
+        {0x03ba, 0xea} /* small letter kappa */,
+        {0x03bb, 0xeb} /* small letter lamda */,
+        {0x03bc, 0xec} /* small letter mu */,
+        {0x03bd, 0xed} /* small letter nu */,
+        {0x03be, 0xee} /* small letter xi */,
+        {0x03c0, 0xf0} /* small letter pi */,
+        {0x03c1, 0xf1} /* small letter rho */,
+        {0x03c3, 0xf2} /* small letter sigma */,
+        {0x03c4, 0xf4} /* small letter tau */,
+        {0x03c5, 0xf5} /* small letter upsilon */,
+        {0x03c6, 0xf6} /* small letter phi */,
+        {0x03c7, 0xf7} /* small letter chi */,
+        {0x03c8, 0xf8} /* small letter psi */,
+        {0x03c9, 0xf9} /* small letter omega */,
+        {0x05d0, 0xc0} /* letter alef */,
+        {0x2020, 0xfa} /* dagger */,
+        {0x2030, 0xef} /* mille sign */,
+        {0x2032, 0xcc} /* prime */,
+        {0x2033, 0xcd} /* prime */,
+        {0x203e, 0xff} /* overline */,
+        {0x2190, 0xfb} /* arrow */,
+        {0x2191, 0xfc} /* arrow */,
+        {0x2192, 0xfd} /* arrow */,
+        {0x2193, 0xfe} /* arrow */,
+        {0x2194, 0xbc} /* right arrow */,
+        {0x21c0, 0xdb} /* vector above (iso-10646-1dis 032/032/038/046) */,
+        {0x21d0, 0xa8} /* double arrow */,
+        {0x21d2, 0xa9} /* double arrow */,
+        {0x2200, 0xbe} /* all */,
+        {0x2202, 0xb4} /* differential */,
+        {0x2203, 0xbf} /* exists */,
+        {0x2205, 0xda} /* set */,
+        {0x2207, 0xb3} /* nabla */,
+        {0x2208, 0xac} /* of */,
+        {0x220b, 0xad} /* as member */,
+        {0x2213, 0xcf} /* sign */,
+        {0x221a, 0xdc} /* root */,
+        {0x221d, 0xde} /* to */,
+        {0x221e, 0xb2} /* infinity */,
+        {0x221f, 0xc7} /* angle */,
+        {0x2220, 0xc6} /* angle */,
+        {0x2225, 0xc2} /* to */,
+        {0x2227, 0xa2} /* and */,
+        {0x2228, 0xa3} /* or */,
+        {0x2229, 0xa4} /* intersection */,
+        {0x222a, 0xa5} /* union */,
+        {0x222b, 0xb0} /* integral */,
+        {0x222e, 0xb1} /* integral */,
+        {0x2234, 0xaa} /* therefore */,
+        {0x2235, 0xab} /* because */,
+        {0x223c, 0xb5} /* operator */,
+        {0x2243, 0xb7} /* equal to */,
+        {0x2245, 0xb8} /* equal to */,
+        {0x2248, 0xb6} /* equal to */,
+        {0x2260, 0xba} /* equal to */,
+        {0x2261, 0xa1} /* to */,
+        {0x2264, 0xb9} /* or equal to */,
+        {0x2265, 0xbb} /* or equal to */,
+        {0x2282, 0xa6} /* of */,
+        {0x2283, 0xa7} /* of */,
+        {0x2286, 0xae} /* of or equal to */,
+        {0x2287, 0xaf} /* of or equal to */,
+        {0x22a5, 0xc5} /* tack */,
+        {0x2329, 0xc9} /* angle bracket */,
+        {0x232a, 0xca} /* angle bracket */,
+        {0x25a1, 0xc1} /* square */
+};
+
+/*
+#define cet_ucs4_to_iec_p27_1_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iec_p27_1_extra[cet_ucs4_to_iec_p27_1_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iec_p27_1 =    /* defined in cet.h */
+{      
+       cet_cs_name_iec_p27_1,          /* name of character set        */
+       cet_cs_alias_iec_p27_1,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iec_p27_1,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iec_p27_1,         /* first non standard character */
+       cet_ucs4_cnt_iec_p27_1,         /* number of values in table    */
+
+       cet_ucs4_to_iec_p27_1_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_iec_p27_1_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iec_p27_1_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x02c7, 0x2261, 0x2227, 0x2228, 0x2229, 0x222a, 0x2282, 0x2283, 
+       0x21d0, 0x21d2, 0x2234, 0x2235, 0x2208, 0x220b, 0x2286, 0x2287, 
+       0x222b, 0x222e, 0x221e, 0x2207, 0x2202, 0x223c, 0x2248, 0x2243, 
+       0x2245, 0x2264, 0x2260, 0x2265, 0x2194, 0x00ac, 0x2200, 0x2203, 
+       0x05d0, 0x25a1, 0x2225, 0x0393, 0x0394, 0x22a5, 0x2220, 0x221f, 
+       0x0398, 0x2329, 0x232a, 0x039b, 0x2032, 0x2033, 0x039e, 0x2213, 
+       0x03a0, 0x00b2, 0x03a3, 0x00d7, 0x00b3, 0x03a5, 0x03a6, 0x00b7, 
+       0x03a8, 0x03a9, 0x2205, 0x21c0, 0x221a, 0x0192, 0x221d, 0x00b1, 
+       0x00b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 
+       0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x2030, 
+       0x03c0, 0x03c1, 0x03c3, 0x00f7, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 
+       0x03c8, 0x03c9, 0x2020, 0x2190, 0x2191, 0x2192, 0x2193, 0x203e
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_10367_box.h b/gpsbabel/cet/iso_10367_box.h
new file mode 100644 (file)
index 0000000..c29333d
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO_10367-box" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_10367_box_h
+#define iso_10367_box_h
+
+#define cet_cs_name_iso_10367_box "ISO_10367-box"
+
+const char *cet_cs_alias_iso_10367_box[] = 
+{
+       "ISO_10367-box", "iso-ir-155", NULL
+};
+
+#define cet_ucs4_ofs_iso_10367_box 160
+#define cet_ucs4_cnt_iso_10367_box 62
+
+const int cet_ucs4_map_iso_10367_box[cet_ucs4_cnt_iso_10367_box] =
+{
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+       0x2551, 0x2550, 0x2554, 0x2557, 0x255a, 0x255d, 0x2560, 0x2563, 
+       0x2566, 0x2569, 0x256c, 0xe019, 0x2584, 0x2588, 0x25aa,     -1, 
+       0x2502, 0x2500, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 
+       0x252c, 0x2534, 0x253c, 0x2591, 0x2592, 0x2593
+};
+
+#define cet_ucs4_to_iso_10367_box_ct 29
+
+const cet_ucs4_link_t cet_ucs4_to_iso_10367_box_links[cet_ucs4_to_iso_10367_box_ct] =
+{
+        {0x2500, 0xd1} /* drawings light horizontal */,
+        {0x2502, 0xd0} /* drawings light vertical */,
+        {0x250c, 0xd2} /* drawings light down and right */,
+        {0x2510, 0xd3} /* drawings light down and left */,
+        {0x2514, 0xd4} /* drawings light up and right */,
+        {0x2518, 0xd5} /* drawings light up and left */,
+        {0x251c, 0xd6} /* drawings light vertical and right */,
+        {0x2524, 0xd7} /* drawings light vertical and left */,
+        {0x252c, 0xd8} /* drawings light down and horizontal */,
+        {0x2534, 0xd9} /* drawings light up and horizontal */,
+        {0x253c, 0xda} /* drawings light vertical and horizontal */,
+        {0x2550, 0xc1} /* drawings heavy horizontal */,
+        {0x2551, 0xc0} /* drawings heavy vertical */,
+        {0x2554, 0xc2} /* drawings heavy down and right */,
+        {0x2557, 0xc3} /* drawings heavy down and left */,
+        {0x255a, 0xc4} /* drawings heavy up and right */,
+        {0x255d, 0xc5} /* drawings heavy up and left */,
+        {0x2560, 0xc6} /* drawings heavy vertical and right */,
+        {0x2563, 0xc7} /* drawings heavy vertical and left */,
+        {0x2566, 0xc8} /* drawings heavy down and horizontal */,
+        {0x2569, 0xc9} /* drawings heavy up and horizontal */,
+        {0x256c, 0xca} /* drawings heavy vertical and horizontal */,
+        {0x2584, 0xcc} /* half block */,
+        {0x2588, 0xcd} /* block */,
+        {0x2591, 0xdb} /* shade */,
+        {0x2592, 0xdc} /* shade */,
+        {0x2593, 0xdd} /* shade */,
+        {0x25aa, 0xce} /* small square */,
+        {0xe019, 0xcb} /* space b (iso-ir-8-1 096) */
+};
+
+/*
+#define cet_ucs4_to_iso_10367_box_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_10367_box_extra[cet_ucs4_to_iso_10367_box_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_10367_box =        /* defined in cet.h */
+{      
+       cet_cs_name_iso_10367_box,              /* name of character set        */
+       cet_cs_alias_iso_10367_box,             /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_10367_box,             /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_10367_box,             /* first non standard character */
+       cet_ucs4_cnt_iso_10367_box,             /* number of values in table    */
+
+       cet_ucs4_to_iso_10367_box_links,        /* UCS-4 to char links          */
+       cet_ucs4_to_iso_10367_box_ct,           /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_10367_box_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+       0x2551, 0x2550, 0x2554, 0x2557, 0x255a, 0x255d, 0x2560, 0x2563, 
+       0x2566, 0x2569, 0x256c, 0xe019, 0x2584, 0x2588, 0x25aa,     -1, 
+       0x2502, 0x2500, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 
+       0x252c, 0x2534, 0x253c, 0x2591, 0x2592, 0x2593,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_5427.h b/gpsbabel/cet/iso_5427.h
new file mode 100644 (file)
index 0000000..7876a43
--- /dev/null
@@ -0,0 +1,188 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO_5427" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_5427_h
+#define iso_5427_h
+
+#define cet_cs_name_iso_5427 "ISO_5427"
+
+const char *cet_cs_alias_iso_5427[] = 
+{
+       "ISO_5427", "iso-ir-37", NULL
+};
+
+#define cet_ucs4_ofs_iso_5427 36
+#define cet_ucs4_cnt_iso_5427 92
+
+const int cet_ucs4_map_iso_5427[cet_ucs4_cnt_iso_5427] =
+{
+       0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 
+       0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 
+       0x003c, 0x003d, 0x003e, 0x003f, 0x044e, 0x0430, 0x0431, 0x0446, 
+       0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043a, 
+       0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x044f, 0x0440, 0x0441, 
+       0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 
+       0x044d, 0x0449, 0x0447, 0x044a, 0x042e, 0x0410, 0x0411, 0x0426, 
+       0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 
+       0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421, 
+       0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 
+       0x042d, 0x0429, 0x0427, 0x007f
+};
+
+#define cet_ucs4_to_iso_5427_ct 64
+
+const cet_ucs4_link_t cet_ucs4_to_iso_5427_links[cet_ucs4_to_iso_5427_ct] =
+{
+        {0x00a4, 0x24} /* sign */,
+        {0x0410, 0x61} /* capital letter a */,
+        {0x0411, 0x62} /* capital letter be */,
+        {0x0412, 0x77} /* capital letter ve */,
+        {0x0413, 0x67} /* capital letter ghe */,
+        {0x0414, 0x64} /* capital letter de */,
+        {0x0415, 0x65} /* capital letter ie */,
+        {0x0416, 0x76} /* capital letter zhe */,
+        {0x0417, 0x7a} /* capital letter ze */,
+        {0x0418, 0x69} /* capital letter i */,
+        {0x0419, 0x6a} /* capital letter short i */,
+        {0x041a, 0x6b} /* capital letter ka */,
+        {0x041b, 0x6c} /* capital letter el */,
+        {0x041c, 0x6d} /* capital letter em */,
+        {0x041d, 0x6e} /* capital letter en */,
+        {0x041e, 0x6f} /* capital letter o */,
+        {0x041f, 0x70} /* capital letter pe */,
+        {0x0420, 0x72} /* capital letter er */,
+        {0x0421, 0x73} /* capital letter es */,
+        {0x0422, 0x74} /* capital letter te */,
+        {0x0423, 0x75} /* capital letter u */,
+        {0x0424, 0x66} /* capital letter ef */,
+        {0x0425, 0x68} /* capital letter ha */,
+        {0x0426, 0x63} /* capital letter tse */,
+        {0x0427, 0x7e} /* capital letter che */,
+        {0x0428, 0x7b} /* capital letter sha */,
+        {0x0429, 0x7d} /* capital letter shcha */,
+        {0x042b, 0x79} /* capital letter yeru */,
+        {0x042c, 0x78} /* capital letter soft sign */,
+        {0x042d, 0x7c} /* capital letter e */,
+        {0x042e, 0x60} /* capital letter yu */,
+        {0x042f, 0x71} /* capital letter ya */,
+        {0x0430, 0x41} /* small letter a */,
+        {0x0431, 0x42} /* small letter be */,
+        {0x0432, 0x57} /* small letter ve */,
+        {0x0433, 0x47} /* small letter ghe */,
+        {0x0434, 0x44} /* small letter de */,
+        {0x0435, 0x45} /* small letter ie */,
+        {0x0436, 0x56} /* small letter zhe */,
+        {0x0437, 0x5a} /* small letter ze */,
+        {0x0438, 0x49} /* small letter i */,
+        {0x0439, 0x4a} /* small letter short i */,
+        {0x043a, 0x4b} /* small letter ka */,
+        {0x043b, 0x4c} /* small letter el */,
+        {0x043c, 0x4d} /* small letter em */,
+        {0x043d, 0x4e} /* small letter en */,
+        {0x043e, 0x4f} /* small letter o */,
+        {0x043f, 0x50} /* small letter pe */,
+        {0x0440, 0x52} /* small letter er */,
+        {0x0441, 0x53} /* small letter es */,
+        {0x0442, 0x54} /* small letter te */,
+        {0x0443, 0x55} /* small letter u */,
+        {0x0444, 0x46} /* small letter ef */,
+        {0x0445, 0x48} /* small letter ha */,
+        {0x0446, 0x43} /* small letter tse */,
+        {0x0447, 0x5e} /* small letter che */,
+        {0x0448, 0x5b} /* small letter sha */,
+        {0x0449, 0x5d} /* small letter shcha */,
+        {0x044a, 0x5f} /* small letter hard sign */,
+        {0x044b, 0x59} /* small letter yeru */,
+        {0x044c, 0x58} /* small letter soft sign */,
+        {0x044d, 0x5c} /* small letter e */,
+        {0x044e, 0x40} /* small letter yu */,
+        {0x044f, 0x51} /* small letter ya */
+};
+
+/*
+#define cet_ucs4_to_iso_5427_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_5427_extra[cet_ucs4_to_iso_5427_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_5427 =     /* defined in cet.h */
+{      
+       cet_cs_name_iso_5427,           /* name of character set        */
+       cet_cs_alias_iso_5427,          /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_5427,          /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_5427,          /* first non standard character */
+       cet_ucs4_cnt_iso_5427,          /* number of values in table    */
+
+       cet_ucs4_to_iso_5427_links,     /* UCS-4 to char links          */
+       cet_ucs4_to_iso_5427_ct,                /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_5427_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 
+       0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 
+       0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+       0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 
+       0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_646_irv.h b/gpsbabel/cet/iso_646_irv.h
new file mode 100644 (file)
index 0000000..26be677
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO_646.irv" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_646_irv_h
+#define iso_646_irv_h
+
+#define cet_cs_name_iso_646_irv "ISO_646.irv"
+
+const char *cet_cs_alias_iso_646_irv[] = 
+{
+       "ISO_646.irv", "irv", "iso-ir-2", "ISO_646.irv:1983",
+       NULL
+};
+
+#define cet_ucs4_ofs_iso_646_irv 36
+#define cet_ucs4_cnt_iso_646_irv 92
+
+const int cet_ucs4_map_iso_646_irv[cet_ucs4_cnt_iso_646_irv] =
+{
+       0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 
+       0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 
+       0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 
+       0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 
+       0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 
+       0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 
+       0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 
+       0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 
+       0x007c, 0x007d, 0x203e, 0x007f
+};
+
+#define cet_ucs4_to_iso_646_irv_ct 2
+
+const cet_ucs4_link_t cet_ucs4_to_iso_646_irv_links[cet_ucs4_to_iso_646_irv_ct] =
+{
+        {0x00a4, 0x24} /* sign */,
+        {0x203e, 0x7e} /* overline */
+};
+
+/*
+#define cet_ucs4_to_iso_646_irv_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_646_irv_extra[cet_ucs4_to_iso_646_irv_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_646_irv =  /* defined in cet.h */
+{      
+       cet_cs_name_iso_646_irv,                /* name of character set        */
+       cet_cs_alias_iso_646_irv,               /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_646_irv,               /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_646_irv,               /* first non standard character */
+       cet_ucs4_cnt_iso_646_irv,               /* number of values in table    */
+
+       cet_ucs4_to_iso_646_irv_links,  /* UCS-4 to char links          */
+       cet_ucs4_to_iso_646_irv_ct,             /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_646_irv_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_6937_2_25.h b/gpsbabel/cet/iso_6937_2_25.h
new file mode 100644 (file)
index 0000000..fbc7a8e
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO_6937-2-25" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_6937_2_25_h
+#define iso_6937_2_25_h
+
+#define cet_cs_name_iso_6937_2_25 "ISO_6937-2-25"
+
+const char *cet_cs_alias_iso_6937_2_25[] = 
+{
+       "ISO_6937-2-25", "iso-ir-152", NULL
+};
+
+#define cet_ucs4_ofs_iso_6937_2_25 36
+#define cet_ucs4_cnt_iso_6937_2_25 218
+
+const int cet_ucs4_map_iso_6937_2_25[cet_ucs4_cnt_iso_6937_2_25] =
+{
+       0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 
+       0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 
+       0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 
+       0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 
+       0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 
+       0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 
+       0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 
+       0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 
+       0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x009c, 0x009d, 0x009e, 0x009f, 0x00a0,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1, 0x201c,     -1, 
+       0x2190, 0x2191, 0x2192, 0x2193,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1, 0x201d,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+       0x2122, 0x266a,     -1,     -1,     -1,     -1,     -1,     -1, 
+       0x215b, 0x215c, 0x215d, 0x215e, 0x2126,     -1,     -1,     -1, 
+           -1,     -1, 0x0132, 0x013f,     -1,     -1, 0x0152,     -1, 
+       0x0174, 0x0176, 0x0178, 0x0149,     -1,     -1,     -1,     -1, 
+           -1,     -1, 0x0133, 0x0140,     -1,     -1, 0x0153,     -1, 
+       0x0175, 0x0177
+};
+
+#define cet_ucs4_to_iso_6937_2_25_ct 26
+
+const cet_ucs4_link_t cet_ucs4_to_iso_6937_2_25_links[cet_ucs4_to_iso_6937_2_25_ct] =
+{
+        {0x00a4, 0x24} /* sign */,
+        {0x0132, 0xe6} /* capital ligature ij */,
+        {0x0133, 0xf6} /* small ligature ij */,
+        {0x013f, 0xe7} /* capital letter l with middle dot */,
+        {0x0140, 0xf7} /* small letter l with middle dot */,
+        {0x0149, 0xef} /* small letter n preceded by apostrophe */,
+        {0x0152, 0xea} /* capital ligature oe */,
+        {0x0153, 0xfa} /* small ligature oe */,
+        {0x0174, 0xec} /* capital letter w with circumflex */,
+        {0x0175, 0xfc} /* small letter w with circumflex */,
+        {0x0176, 0xed} /* capital letter y with circumflex */,
+        {0x0177, 0xfd} /* small letter y with circumflex */,
+        {0x0178, 0xee} /* capital letter y with diaeresis */,
+        {0x201c, 0xaa} /* double quotation mark */,
+        {0x201d, 0xba} /* double quotation mark */,
+        {0x2122, 0xd4} /* mark sign */,
+        {0x2126, 0xe0} /* sign */,
+        {0x215b, 0xdc} /* fraction one eighth */,
+        {0x215c, 0xdd} /* fraction three eighths */,
+        {0x215d, 0xde} /* fraction five eighths */,
+        {0x215e, 0xdf} /* fraction seven eighths */,
+        {0x2190, 0xac} /* arrow */,
+        {0x2191, 0xad} /* arrow */,
+        {0x2192, 0xae} /* arrow */,
+        {0x2193, 0xaf} /* arrow */,
+        {0x266a, 0xd5} /* note */
+};
+
+/*
+#define cet_ucs4_to_iso_6937_2_25_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_6937_2_25_extra[cet_ucs4_to_iso_6937_2_25_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_6937_2_25 =        /* defined in cet.h */
+{      
+       cet_cs_name_iso_6937_2_25,              /* name of character set        */
+       cet_cs_alias_iso_6937_2_25,             /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_6937_2_25,             /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_6937_2_25,             /* first non standard character */
+       cet_ucs4_cnt_iso_6937_2_25,             /* number of values in table    */
+
+       cet_ucs4_to_iso_6937_2_25_links,        /* UCS-4 to char links          */
+       cet_ucs4_to_iso_6937_2_25_ct,           /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_6937_2_25_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1, 0x201c,     -1, 0x2190, 0x2191, 0x2192, 0x2193, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1, 0x201d,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1, 0x2122, 0x266a,     -1,     -1, 
+           -1,     -1,     -1,     -1, 0x215b, 0x215c, 0x215d, 0x215e, 
+       0x2126,     -1,     -1,     -1,     -1,     -1, 0x0132, 0x013f, 
+           -1,     -1, 0x0152,     -1, 0x0174, 0x0176, 0x0178, 0x0149, 
+           -1,     -1,     -1,     -1,     -1,     -1, 0x0133, 0x0140, 
+           -1,     -1, 0x0153,     -1, 0x0175, 0x0177,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_1.h b/gpsbabel/cet/iso_8859_1.h
new file mode 100644 (file)
index 0000000..43a0a3b
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO-8859-1" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_1_h
+#define iso_8859_1_h
+
+#define cet_cs_name_iso_8859_1 "ISO-8859-1"
+
+const char *cet_cs_alias_iso_8859_1[] = 
+{
+       "ISO-8859-1", "819/CR-LF", "CP819/CR-LF", "csISOLatin1", 
+       "IBM819/CR-LF", "ISO8859-1", "iso-ir-100", "ISO_8859-1", 
+       "ISO_8859-1:1987", "l1", "lat1", "latin1", 
+       "Latin-1", NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_1 256
+#define cet_ucs4_cnt_iso_8859_1 0
+
+const int cet_ucs4_map_iso_8859_1[cet_ucs4_cnt_iso_8859_1] =
+{
+};
+
+#define cet_ucs4_to_iso_8859_1_ct 0
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_1_links[cet_ucs4_to_iso_8859_1_ct] =
+{
+};
+
+/*
+#define cet_ucs4_to_iso_8859_1_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_1_extra[cet_ucs4_to_iso_8859_1_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_1 =   /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_1,         /* name of character set        */
+       cet_cs_alias_iso_8859_1,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_1,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_1,                /* first non standard character */
+       cet_ucs4_cnt_iso_8859_1,                /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_1_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_1_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_1_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+       0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 
+       0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 
+       0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 
+       0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 
+       0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_10.h b/gpsbabel/cet/iso_8859_10.h
new file mode 100644 (file)
index 0000000..cd4ac50
--- /dev/null
@@ -0,0 +1,172 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO-8859-10" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_10_h
+#define iso_8859_10_h
+
+#define cet_cs_name_iso_8859_10 "ISO-8859-10"
+
+const char *cet_cs_alias_iso_8859_10[] = 
+{
+       "ISO-8859-10", "csISOLatin6", "ISO8859-10", "iso-ir-157", 
+       "ISO_8859-10", "ISO_8859-10:1992", "ISO_8859-10:1993", "L6", 
+       "latin6", NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_10 161
+#define cet_ucs4_cnt_iso_8859_10 95
+
+const int cet_ucs4_map_iso_8859_10[cet_ucs4_cnt_iso_8859_10] =
+{
+       0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7, 0x013b, 
+       0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a, 0x00b0, 
+       0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7, 0x013c, 
+       0x0111, 0x0161, 0x0167, 0x017e, 0x2014, 0x016b, 0x014b, 0x0100, 
+       0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, 0x010c, 
+       0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 
+       0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168, 0x00d8, 
+       0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x0101, 
+       0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, 0x010d, 
+       0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 
+       0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169, 0x00f8, 
+       0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138
+};
+
+#define cet_ucs4_to_iso_8859_10_ct 46
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_10_links[cet_ucs4_to_iso_8859_10_ct] =
+{
+        {0x0100, 0xc0} /* capital letter a with macron */,
+        {0x0101, 0xe0} /* small letter a with macron */,
+        {0x0104, 0xa1} /* capital letter a with ogonek */,
+        {0x0105, 0xb1} /* small letter a with ogonek */,
+        {0x010c, 0xc8} /* capital letter c with caron */,
+        {0x010d, 0xe8} /* small letter c with caron */,
+        {0x0110, 0xa9} /* capital letter d with stroke */,
+        {0x0111, 0xb9} /* small letter d with stroke */,
+        {0x0112, 0xa2} /* capital letter e with macron */,
+        {0x0113, 0xb2} /* small letter e with macron */,
+        {0x0116, 0xcc} /* capital letter e with dot above */,
+        {0x0117, 0xec} /* small letter e with dot above */,
+        {0x0118, 0xca} /* capital letter e with ogonek */,
+        {0x0119, 0xea} /* small letter e with ogonek */,
+        {0x0122, 0xa3} /* capital letter g with cedilla */,
+        {0x0123, 0xb3} /* small letter g with cedilla */,
+        {0x0128, 0xa5} /* capital letter i with tilde */,
+        {0x0129, 0xb5} /* small letter i with tilde */,
+        {0x012a, 0xa4} /* capital letter i with macron */,
+        {0x012b, 0xb4} /* small letter i with macron */,
+        {0x012e, 0xc7} /* capital letter i with ogonek */,
+        {0x012f, 0xe7} /* small letter i with ogonek */,
+        {0x0136, 0xa6} /* capital letter k with cedilla */,
+        {0x0137, 0xb6} /* small letter k with cedilla */,
+        {0x0138, 0xff} /* small letter kra (greenlandic) */,
+        {0x013b, 0xa8} /* capital letter l with cedilla */,
+        {0x013c, 0xb8} /* small letter l with cedilla */,
+        {0x0145, 0xd1} /* capital letter n with cedilla */,
+        {0x0146, 0xf1} /* small letter n with cedilla */,
+        {0x014a, 0xaf} /* capital letter eng (lappish) */,
+        {0x014b, 0xbf} /* small letter eng (lappish) */,
+        {0x014c, 0xd2} /* capital letter o with macron */,
+        {0x014d, 0xf2} /* small letter o with macron */,
+        {0x0160, 0xaa} /* capital letter s with caron */,
+        {0x0161, 0xba} /* small letter s with caron */,
+        {0x0166, 0xab} /* capital letter t with stroke */,
+        {0x0167, 0xbb} /* small letter t with stroke */,
+        {0x0168, 0xd7} /* capital letter u with tilde */,
+        {0x0169, 0xf7} /* small letter u with tilde */,
+        {0x016a, 0xae} /* capital letter u with macron */,
+        {0x016b, 0xbe} /* small letter u with macron */,
+        {0x0172, 0xd9} /* capital letter u with ogonek */,
+        {0x0173, 0xf9} /* small letter u with ogonek */,
+        {0x017d, 0xac} /* capital letter z with caron */,
+        {0x017e, 0xbc} /* small letter z with caron */,
+        {0x2014, 0xbd} /* dash */
+};
+
+/*
+#define cet_ucs4_to_iso_8859_10_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_10_extra[cet_ucs4_to_iso_8859_10_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_10 =  /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_10,                /* name of character set        */
+       cet_cs_alias_iso_8859_10,               /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_10,               /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_10,               /* first non standard character */
+       cet_ucs4_cnt_iso_8859_10,               /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_10_links,  /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_10_ct,             /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_10_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7, 
+       0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a, 
+       0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7, 
+       0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2014, 0x016b, 0x014b, 
+       0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, 
+       0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf, 
+       0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168, 
+       0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 
+       0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, 
+       0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef, 
+       0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169, 
+       0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_13.h b/gpsbabel/cet/iso_8859_13.h
new file mode 100644 (file)
index 0000000..f499796
--- /dev/null
@@ -0,0 +1,175 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO-8859-13" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_13_h
+#define iso_8859_13_h
+
+#define cet_cs_name_iso_8859_13 "ISO-8859-13"
+
+const char *cet_cs_alias_iso_8859_13[] = 
+{
+       "ISO-8859-13", "ISO8859-13", "iso-baltic", "ISO-IR-179", 
+       "iso-ir-179a", "ISO_8859-13", "ISO_8859-13:1998", "l7", 
+       "latin7", NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_13 165
+#define cet_ucs4_cnt_iso_8859_13 91
+
+const int cet_ucs4_map_iso_8859_13[cet_ucs4_cnt_iso_8859_13] =
+{
+       0x201e, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 
+       0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 
+       0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 
+       0x00bd, 0x00be, 0x00bf, 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 
+       0x00c5, 0x0118, 0x0112, 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 
+       0x0136, 0x012a, 0x013b, 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 
+       0x00d5, 0x00d6, 0x00d7, 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 
+       0x017b, 0x017d, 0x00df, 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 
+       0x00e5, 0x0119, 0x0113, 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 
+       0x0137, 0x012b, 0x013c, 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 
+       0x00f5, 0x00f6, 0x00f7, 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 
+       0x017c, 0x017e, 0x2019
+};
+
+#define cet_ucs4_to_iso_8859_13_ct 49
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_13_links[cet_ucs4_to_iso_8859_13_ct] =
+{
+        {0x0100, 0xc2} /* capital letter a with macron */,
+        {0x0101, 0xe2} /* small letter a with macron */,
+        {0x0104, 0xc0} /* capital letter a with ogonek */,
+        {0x0105, 0xe0} /* small letter a with ogonek */,
+        {0x0106, 0xc3} /* capital letter c with acute */,
+        {0x0107, 0xe3} /* small letter c with acute */,
+        {0x010c, 0xc8} /* capital letter c with caron */,
+        {0x010d, 0xe8} /* small letter c with caron */,
+        {0x0112, 0xc7} /* capital letter e with macron */,
+        {0x0113, 0xe7} /* small letter e with macron */,
+        {0x0116, 0xcb} /* capital letter e with dot above */,
+        {0x0117, 0xeb} /* small letter e with dot above */,
+        {0x0118, 0xc6} /* capital letter e with ogonek */,
+        {0x0119, 0xe6} /* small letter e with ogonek */,
+        {0x0122, 0xcc} /* capital letter g with cedilla */,
+        {0x0123, 0xec} /* small letter g with cedilla */,
+        {0x012a, 0xce} /* capital letter i with macron */,
+        {0x012b, 0xee} /* small letter i with macron */,
+        {0x012e, 0xc1} /* capital letter i with ogonek */,
+        {0x012f, 0xe1} /* small letter i with ogonek */,
+        {0x0136, 0xcd} /* capital letter k with cedilla */,
+        {0x0137, 0xed} /* small letter k with cedilla */,
+        {0x013b, 0xcf} /* capital letter l with cedilla */,
+        {0x013c, 0xef} /* small letter l with cedilla */,
+        {0x0141, 0xd9} /* capital letter l with stroke */,
+        {0x0142, 0xf9} /* small letter l with stroke */,
+        {0x0143, 0xd1} /* capital letter n with acute */,
+        {0x0144, 0xf1} /* small letter n with acute */,
+        {0x0145, 0xd2} /* capital letter n with cedilla */,
+        {0x0146, 0xf2} /* small letter n with cedilla */,
+        {0x014c, 0xd4} /* capital letter o with macron */,
+        {0x014d, 0xf4} /* small letter o with macron */,
+        {0x015a, 0xda} /* capital letter s with acute */,
+        {0x015b, 0xfa} /* small letter s with acute */,
+        {0x0160, 0xd0} /* capital letter s with caron */,
+        {0x0161, 0xf0} /* small letter s with caron */,
+        {0x016a, 0xdb} /* capital letter u with macron */,
+        {0x016b, 0xfb} /* small letter u with macron */,
+        {0x0172, 0xd8} /* capital letter u with ogonek */,
+        {0x0173, 0xf8} /* small letter u with ogonek */,
+        {0x0179, 0xca} /* capital letter z with acute */,
+        {0x017a, 0xea} /* small letter z with acute */,
+        {0x017b, 0xdd} /* capital letter z with dot above */,
+        {0x017c, 0xfd} /* small letter z with dot above */,
+        {0x017d, 0xde} /* capital letter z with caron */,
+        {0x017e, 0xfe} /* small letter z with caron */,
+        {0x2019, 0xff} /* single quotation mark */,
+        {0x201c, 0xb4} /* double quotation mark */,
+        {0x201e, 0xa5} /* low-9 quotation mark */
+};
+
+/*
+#define cet_ucs4_to_iso_8859_13_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_13_extra[cet_ucs4_to_iso_8859_13_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_13 =  /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_13,                /* name of character set        */
+       cet_cs_alias_iso_8859_13,               /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_13,               /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_13,               /* first non standard character */
+       cet_ucs4_cnt_iso_8859_13,               /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_13_links,  /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_13_ct,             /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_13_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 
+       0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, 
+       0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, 
+       0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, 
+       0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, 
+       0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, 
+       0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, 
+       0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, 
+       0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_14.h b/gpsbabel/cet/iso_8859_14.h
new file mode 100644 (file)
index 0000000..da7a3a9
--- /dev/null
@@ -0,0 +1,157 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO-8859-14" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_14_h
+#define iso_8859_14_h
+
+#define cet_cs_name_iso_8859_14 "ISO-8859-14"
+
+const char *cet_cs_alias_iso_8859_14[] = 
+{
+       "ISO-8859-14", "ISO8859-14", "iso-celtic", "iso-ir-199", 
+       "ISO_8859-14", "ISO_8859-14:1998", "l8", "latin8",
+       NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_14 161
+#define cet_ucs4_cnt_iso_8859_14 95
+
+const int cet_ucs4_map_iso_8859_14[cet_ucs4_cnt_iso_8859_14] =
+{
+       0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, 0x1e80, 
+       0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x1e61, 0x1e1e, 
+       0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, 0x1e81, 
+       0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x0178, 0x00c0, 
+       0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 
+       0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x0174, 
+       0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, 0x00d8, 
+       0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, 0x00e0, 
+       0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 
+       0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x0175, 
+       0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, 0x00f8, 
+       0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff
+};
+
+#define cet_ucs4_to_iso_8859_14_ct 31
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_14_links[cet_ucs4_to_iso_8859_14_ct] =
+{
+        {0x010a, 0xa4} /* capital letter c with dot above */,
+        {0x010b, 0xa5} /* small letter c with dot above */,
+        {0x0120, 0xb2} /* capital letter g with dot above */,
+        {0x0121, 0xb3} /* small letter g with dot above */,
+        {0x0174, 0xd0} /* capital letter w with circumflex */,
+        {0x0175, 0xf0} /* small letter w with circumflex */,
+        {0x0176, 0xde} /* capital letter y with circumflex */,
+        {0x0177, 0xfe} /* small letter y with circumflex */,
+        {0x0178, 0xbf} /* capital letter y with diaeresis */,
+        {0x1e02, 0xa1} /* capital letter b with dot above */,
+        {0x1e03, 0xa2} /* small letter b with dot above */,
+        {0x1e0a, 0xa6} /* capital letter d with dot above */,
+        {0x1e0b, 0xab} /* small letter d with dot above */,
+        {0x1e1e, 0xb0} /* capital letter f with dot above */,
+        {0x1e1f, 0xb1} /* small letter f with dot above */,
+        {0x1e40, 0xb4} /* capital letter m with dot above */,
+        {0x1e41, 0xb5} /* small letter m with dot above */,
+        {0x1e56, 0xb7} /* capital letter p with dot above */,
+        {0x1e57, 0xb9} /* small letter p with dot above */,
+        {0x1e60, 0xbb} /* capital letter s with dot above */,
+        {0x1e61, 0xaf} /* small letter s with dot above */,
+        {0x1e6a, 0xd7} /* capital letter t with dot above */,
+        {0x1e6b, 0xf7} /* small letter t with dot above */,
+        {0x1e80, 0xa8} /* capital letter w with grave */,
+        {0x1e81, 0xb8} /* small letter w with grave */,
+        {0x1e82, 0xaa} /* capital letter w with acute */,
+        {0x1e83, 0xba} /* small letter w with acute */,
+        {0x1e84, 0xbd} /* capital letter w with diaeresis */,
+        {0x1e85, 0xbe} /* small letter w with diaeresis */,
+        {0x1ef2, 0xac} /* capital letter y with grave */,
+        {0x1ef3, 0xbc} /* small letter y with grave */
+};
+
+/*
+#define cet_ucs4_to_iso_8859_14_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_14_extra[cet_ucs4_to_iso_8859_14_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_14 =  /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_14,                /* name of character set        */
+       cet_cs_alias_iso_8859_14,               /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_14,               /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_14,               /* first non standard character */
+       cet_ucs4_cnt_iso_8859_14,               /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_14_links,  /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_14_ct,             /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_14_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, 
+       0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x1e61, 
+       0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, 
+       0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x0178, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+       0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, 
+       0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 
+       0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 
+       0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, 
+       0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_15.h b/gpsbabel/cet/iso_8859_15.h
new file mode 100644 (file)
index 0000000..315fb32
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO-8859-15" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_15_h
+#define iso_8859_15_h
+
+#define cet_cs_name_iso_8859_15 "ISO-8859-15"
+
+const char *cet_cs_alias_iso_8859_15[] = 
+{
+       "ISO-8859-15", "ISO8859-15", "iso-ir-203", "ISO_8859-15", 
+       "ISO_8859-15:1998", "l9", "latin9", NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_15 164
+#define cet_ucs4_cnt_iso_8859_15 92
+
+const int cet_ucs4_map_iso_8859_15[cet_ucs4_cnt_iso_8859_15] =
+{
+       0x20ac, 0x00a5, 0x0160, 0x00a7, 0x0161, 0x00a9, 0x00aa, 0x00ab, 
+       0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 
+       0x017d, 0x00b5, 0x00b6, 0x00b7, 0x017e, 0x00b9, 0x00ba, 0x00bb, 
+       0x0152, 0x0153, 0x0178, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 
+       0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 
+       0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 
+       0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 
+       0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 
+       0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 
+       0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 
+       0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 
+       0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+
+#define cet_ucs4_to_iso_8859_15_ct 8
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_15_links[cet_ucs4_to_iso_8859_15_ct] =
+{
+        {0x0152, 0xbc} /* capital ligature oe */,
+        {0x0153, 0xbd} /* small ligature oe */,
+        {0x0160, 0xa6} /* capital letter s with caron */,
+        {0x0161, 0xa8} /* small letter s with caron */,
+        {0x0178, 0xbe} /* capital letter y with diaeresis */,
+        {0x017d, 0xb4} /* capital letter z with caron */,
+        {0x017e, 0xb8} /* small letter z with caron */,
+        {0x20ac, 0xa4} /* euro */
+};
+
+/*
+#define cet_ucs4_to_iso_8859_15_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_15_extra[cet_ucs4_to_iso_8859_15_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_15 =  /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_15,                /* name of character set        */
+       cet_cs_alias_iso_8859_15,               /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_15,               /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_15,               /* first non standard character */
+       cet_ucs4_cnt_iso_8859_15,               /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_15_links,  /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_15_ct,             /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_15_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7, 
+       0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7, 
+       0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+       0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 
+       0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 
+       0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 
+       0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 
+       0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_2.h b/gpsbabel/cet/iso_8859_2.h
new file mode 100644 (file)
index 0000000..bf2af29
--- /dev/null
@@ -0,0 +1,183 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO-8859-2" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_2_h
+#define iso_8859_2_h
+
+#define cet_cs_name_iso_8859_2 "ISO-8859-2"
+
+const char *cet_cs_alias_iso_8859_2[] = 
+{
+       "ISO-8859-2", "912/CR-LF", "CP912/CR-LF", "csISOLatin2", 
+       "IBM912/CR-LF", "ISO8859-2", "iso-ir-101", "ISO_8859-2", 
+       "ISO_8859-2:1987", "l2", "latin2", NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_2 161
+#define cet_ucs4_cnt_iso_8859_2 95
+
+const int cet_ucs4_map_iso_8859_2[cet_ucs4_cnt_iso_8859_2] =
+{
+       0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, 0x00a8, 
+       0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, 0x00b0, 
+       0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, 0x00b8, 
+       0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, 0x0154, 
+       0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, 0x010c, 
+       0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, 0x0110, 
+       0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, 0x0158, 
+       0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, 0x0155, 
+       0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, 0x010d, 
+       0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, 0x0111, 
+       0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, 0x0159, 
+       0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9
+};
+
+#define cet_ucs4_to_iso_8859_2_ct 57
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_2_links[cet_ucs4_to_iso_8859_2_ct] =
+{
+        {0x0102, 0xc3} /* capital letter a with breve */,
+        {0x0103, 0xe3} /* small letter a with breve */,
+        {0x0104, 0xa1} /* capital letter a with ogonek */,
+        {0x0105, 0xb1} /* small letter a with ogonek */,
+        {0x0106, 0xc6} /* capital letter c with acute */,
+        {0x0107, 0xe6} /* small letter c with acute */,
+        {0x010c, 0xc8} /* capital letter c with caron */,
+        {0x010d, 0xe8} /* small letter c with caron */,
+        {0x010e, 0xcf} /* capital letter d with caron */,
+        {0x010f, 0xef} /* small letter d with caron */,
+        {0x0110, 0xd0} /* capital letter d with stroke */,
+        {0x0111, 0xf0} /* small letter d with stroke */,
+        {0x0118, 0xca} /* capital letter e with ogonek */,
+        {0x0119, 0xea} /* small letter e with ogonek */,
+        {0x011a, 0xcc} /* capital letter e with caron */,
+        {0x011b, 0xec} /* small letter e with caron */,
+        {0x0139, 0xc5} /* capital letter l with acute */,
+        {0x013a, 0xe5} /* small letter l with acute */,
+        {0x013d, 0xa5} /* capital letter l with caron */,
+        {0x013e, 0xb5} /* small letter l with caron */,
+        {0x0141, 0xa3} /* capital letter l with stroke */,
+        {0x0142, 0xb3} /* small letter l with stroke */,
+        {0x0143, 0xd1} /* capital letter n with acute */,
+        {0x0144, 0xf1} /* small letter n with acute */,
+        {0x0147, 0xd2} /* capital letter n with caron */,
+        {0x0148, 0xf2} /* small letter n with caron */,
+        {0x0150, 0xd5} /* capital letter o with double acute */,
+        {0x0151, 0xf5} /* small letter o with double acute */,
+        {0x0154, 0xc0} /* capital letter r with acute */,
+        {0x0155, 0xe0} /* small letter r with acute */,
+        {0x0158, 0xd8} /* capital letter r with caron */,
+        {0x0159, 0xf8} /* small letter r with caron */,
+        {0x015a, 0xa6} /* capital letter s with acute */,
+        {0x015b, 0xb6} /* small letter s with acute */,
+        {0x015e, 0xaa} /* capital letter s with cedilla */,
+        {0x015f, 0xba} /* small letter s with cedilla */,
+        {0x0160, 0xa9} /* capital letter s with caron */,
+        {0x0161, 0xb9} /* small letter s with caron */,
+        {0x0162, 0xde} /* capital letter t with cedilla */,
+        {0x0163, 0xfe} /* small letter t with cedilla */,
+        {0x0164, 0xab} /* capital letter t with caron */,
+        {0x0165, 0xbb} /* small letter t with caron */,
+        {0x016e, 0xd9} /* capital letter u with ring above */,
+        {0x016f, 0xf9} /* small letter u with ring above */,
+        {0x0170, 0xdb} /* capital letter u with double acute */,
+        {0x0171, 0xfb} /* small letter u with double acute */,
+        {0x0179, 0xac} /* capital letter z with acute */,
+        {0x017a, 0xbc} /* small letter z with acute */,
+        {0x017b, 0xaf} /* capital letter z with dot above */,
+        {0x017c, 0xbf} /* small letter z with dot above */,
+        {0x017d, 0xae} /* capital letter z with caron */,
+        {0x017e, 0xbe} /* small letter z with caron */,
+        {0x02c7, 0xb7} /* caron */,
+        {0x02d8, 0xa2} /* breve */,
+        {0x02d9, 0xff} /* above */,
+        {0x02db, 0xb2} /* ogonek */,
+        {0x02dd, 0xbd} /* acute accent */
+};
+
+/*
+#define cet_ucs4_to_iso_8859_2_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_2_extra[cet_ucs4_to_iso_8859_2_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_2 =   /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_2,         /* name of character set        */
+       cet_cs_alias_iso_8859_2,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_2,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_2,                /* first non standard character */
+       cet_ucs4_cnt_iso_8859_2,                /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_2_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_2_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_2_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, 
+       0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, 
+       0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, 
+       0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, 
+       0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, 
+       0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, 
+       0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, 
+       0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, 
+       0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, 
+       0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, 
+       0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, 
+       0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_3.h b/gpsbabel/cet/iso_8859_3.h
new file mode 100644 (file)
index 0000000..8bc5e94
--- /dev/null
@@ -0,0 +1,154 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO-8859-3" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_3_h
+#define iso_8859_3_h
+
+#define cet_cs_name_iso_8859_3 "ISO-8859-3"
+
+const char *cet_cs_alias_iso_8859_3[] = 
+{
+       "ISO-8859-3", "csISOLatin3", "ISO8859-3", "iso-ir-109", 
+       "ISO_8859-3", "ISO_8859-3:1988", "l3", "latin3",
+       NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_3 161
+#define cet_ucs4_cnt_iso_8859_3 95
+
+const int cet_ucs4_map_iso_8859_3[cet_ucs4_cnt_iso_8859_3] =
+{
+       0x0126, 0x02d8, 0x00a3, 0x00a4,     -1, 0x0124, 0x00a7, 0x00a8, 
+       0x0130, 0x015e, 0x011e, 0x0134, 0x00ad,     -1, 0x017b, 0x00b0, 
+       0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, 0x00b8, 
+       0x0131, 0x015f, 0x011f, 0x0135, 0x00bd,     -1, 0x017c, 0x00c0, 
+       0x00c1, 0x00c2,     -1, 0x00c4, 0x010a, 0x0108, 0x00c7, 0x00c8, 
+       0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,     -1, 
+       0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, 0x011c, 
+       0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, 0x00e0, 
+       0x00e1, 0x00e2,     -1, 0x00e4, 0x010b, 0x0109, 0x00e7, 0x00e8, 
+       0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,     -1, 
+       0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, 0x011d, 
+       0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9
+};
+
+#define cet_ucs4_to_iso_8859_3_ct 28
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_3_links[cet_ucs4_to_iso_8859_3_ct] =
+{
+        {0x0108, 0xc6} /* capital letter c with circumflex */,
+        {0x0109, 0xe6} /* small letter c with circumflex */,
+        {0x010a, 0xc5} /* capital letter c with dot above */,
+        {0x010b, 0xe5} /* small letter c with dot above */,
+        {0x011c, 0xd8} /* capital letter g with circumflex */,
+        {0x011d, 0xf8} /* small letter g with circumflex */,
+        {0x011e, 0xab} /* capital letter g with breve */,
+        {0x011f, 0xbb} /* small letter g with breve */,
+        {0x0120, 0xd5} /* capital letter g with dot above */,
+        {0x0121, 0xf5} /* small letter g with dot above */,
+        {0x0124, 0xa6} /* capital letter h with circumflex */,
+        {0x0125, 0xb6} /* small letter h with circumflex */,
+        {0x0126, 0xa1} /* capital letter h with stroke */,
+        {0x0127, 0xb1} /* small letter h with stroke */,
+        {0x0130, 0xa9} /* capital letter i with dot above */,
+        {0x0131, 0xb9} /* small letter i dotless */,
+        {0x0134, 0xac} /* capital letter j with circumflex */,
+        {0x0135, 0xbc} /* small letter j with circumflex */,
+        {0x015c, 0xde} /* capital letter s with circumflex */,
+        {0x015d, 0xfe} /* small letter s with circumflex */,
+        {0x015e, 0xaa} /* capital letter s with cedilla */,
+        {0x015f, 0xba} /* small letter s with cedilla */,
+        {0x016c, 0xdd} /* capital letter u with breve */,
+        {0x016d, 0xfd} /* small letter u with breve */,
+        {0x017b, 0xaf} /* capital letter z with dot above */,
+        {0x017c, 0xbf} /* small letter z with dot above */,
+        {0x02d8, 0xa2} /* breve */,
+        {0x02d9, 0xff} /* above */
+};
+
+/*
+#define cet_ucs4_to_iso_8859_3_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_3_extra[cet_ucs4_to_iso_8859_3_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_3 =   /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_3,         /* name of character set        */
+       cet_cs_alias_iso_8859_3,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_3,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_3,                /* first non standard character */
+       cet_ucs4_cnt_iso_8859_3,                /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_3_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_3_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_3_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4,     -1, 0x0124, 0x00a7, 
+       0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad,     -1, 0x017b, 
+       0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, 
+       0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd,     -1, 0x017c, 
+       0x00c0, 0x00c1, 0x00c2,     -1, 0x00c4, 0x010a, 0x0108, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+           -1, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, 
+       0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2,     -1, 0x00e4, 0x010b, 0x0109, 0x00e7, 
+       0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 
+           -1, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, 
+       0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_4.h b/gpsbabel/cet/iso_8859_4.h
new file mode 100644 (file)
index 0000000..9628529
--- /dev/null
@@ -0,0 +1,176 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO-8859-4" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_4_h
+#define iso_8859_4_h
+
+#define cet_cs_name_iso_8859_4 "ISO-8859-4"
+
+const char *cet_cs_alias_iso_8859_4[] = 
+{
+       "ISO-8859-4", "csISOLatin4", "ISO8859-4", "iso-ir-110", 
+       "ISO_8859-4", "ISO_8859-4:1988", "l4", "latin4",
+       NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_4 161
+#define cet_ucs4_cnt_iso_8859_4 95
+
+const int cet_ucs4_map_iso_8859_4[cet_ucs4_cnt_iso_8859_4] =
+{
+       0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, 0x00a8, 
+       0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, 0x00b0, 
+       0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, 0x00b8, 
+       0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, 0x0100, 
+       0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, 0x010c, 
+       0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, 0x0110, 
+       0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 
+       0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, 0x0101, 
+       0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, 0x010d, 
+       0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, 0x0111, 
+       0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 
+       0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9
+};
+
+#define cet_ucs4_to_iso_8859_4_ct 50
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_4_links[cet_ucs4_to_iso_8859_4_ct] =
+{
+        {0x0100, 0xc0} /* capital letter a with macron */,
+        {0x0101, 0xe0} /* small letter a with macron */,
+        {0x0104, 0xa1} /* capital letter a with ogonek */,
+        {0x0105, 0xb1} /* small letter a with ogonek */,
+        {0x010c, 0xc8} /* capital letter c with caron */,
+        {0x010d, 0xe8} /* small letter c with caron */,
+        {0x0110, 0xd0} /* capital letter d with stroke */,
+        {0x0111, 0xf0} /* small letter d with stroke */,
+        {0x0112, 0xaa} /* capital letter e with macron */,
+        {0x0113, 0xba} /* small letter e with macron */,
+        {0x0116, 0xcc} /* capital letter e with dot above */,
+        {0x0117, 0xec} /* small letter e with dot above */,
+        {0x0118, 0xca} /* capital letter e with ogonek */,
+        {0x0119, 0xea} /* small letter e with ogonek */,
+        {0x0122, 0xab} /* capital letter g with cedilla */,
+        {0x0123, 0xbb} /* small letter g with cedilla */,
+        {0x0128, 0xa5} /* capital letter i with tilde */,
+        {0x0129, 0xb5} /* small letter i with tilde */,
+        {0x012a, 0xcf} /* capital letter i with macron */,
+        {0x012b, 0xef} /* small letter i with macron */,
+        {0x012e, 0xc7} /* capital letter i with ogonek */,
+        {0x012f, 0xe7} /* small letter i with ogonek */,
+        {0x0136, 0xd3} /* capital letter k with cedilla */,
+        {0x0137, 0xf3} /* small letter k with cedilla */,
+        {0x0138, 0xa2} /* small letter kra (greenlandic) */,
+        {0x013b, 0xa6} /* capital letter l with cedilla */,
+        {0x013c, 0xb6} /* small letter l with cedilla */,
+        {0x0145, 0xd1} /* capital letter n with cedilla */,
+        {0x0146, 0xf1} /* small letter n with cedilla */,
+        {0x014a, 0xbd} /* capital letter eng (lappish) */,
+        {0x014b, 0xbf} /* small letter eng (lappish) */,
+        {0x014c, 0xd2} /* capital letter o with macron */,
+        {0x014d, 0xf2} /* small letter o with macron */,
+        {0x0156, 0xa3} /* capital letter r with cedilla */,
+        {0x0157, 0xb3} /* small letter r with cedilla */,
+        {0x0160, 0xa9} /* capital letter s with caron */,
+        {0x0161, 0xb9} /* small letter s with caron */,
+        {0x0166, 0xac} /* capital letter t with stroke */,
+        {0x0167, 0xbc} /* small letter t with stroke */,
+        {0x0168, 0xdd} /* capital letter u with tilde */,
+        {0x0169, 0xfd} /* small letter u with tilde */,
+        {0x016a, 0xde} /* capital letter u with macron */,
+        {0x016b, 0xfe} /* small letter u with macron */,
+        {0x0172, 0xd9} /* capital letter u with ogonek */,
+        {0x0173, 0xf9} /* small letter u with ogonek */,
+        {0x017d, 0xae} /* capital letter z with caron */,
+        {0x017e, 0xbe} /* small letter z with caron */,
+        {0x02c7, 0xb7} /* caron */,
+        {0x02d9, 0xff} /* above */,
+        {0x02db, 0xb2} /* ogonek */
+};
+
+/*
+#define cet_ucs4_to_iso_8859_4_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_4_extra[cet_ucs4_to_iso_8859_4_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_4 =   /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_4,         /* name of character set        */
+       cet_cs_alias_iso_8859_4,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_4,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_4,                /* first non standard character */
+       cet_ucs4_cnt_iso_8859_4,                /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_4_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_4_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_4_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, 
+       0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, 
+       0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, 
+       0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, 
+       0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, 
+       0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, 
+       0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 
+       0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, 
+       0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, 
+       0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, 
+       0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 
+       0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_5.h b/gpsbabel/cet/iso_8859_5.h
new file mode 100644 (file)
index 0000000..c70e491
--- /dev/null
@@ -0,0 +1,219 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO-8859-5" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_5_h
+#define iso_8859_5_h
+
+#define cet_cs_name_iso_8859_5 "ISO-8859-5"
+
+const char *cet_cs_alias_iso_8859_5[] = 
+{
+       "ISO-8859-5", "csISOLatinCyrillic", "cyrillic", "ISO8859-5", 
+       "iso-ir-144", "ISO_8859-5", "ISO_8859-5:1988", NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_5 161
+#define cet_ucs4_cnt_iso_8859_5 95
+
+const int cet_ucs4_map_iso_8859_5[cet_ucs4_cnt_iso_8859_5] =
+{
+       0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 
+       0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, 0x0410, 
+       0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 
+       0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 
+       0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 
+       0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 
+       0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 
+       0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 
+       0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 
+       0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x2116, 
+       0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 
+       0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f
+};
+
+#define cet_ucs4_to_iso_8859_5_ct 94
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_5_links[cet_ucs4_to_iso_8859_5_ct] =
+{
+        {0x00a7, 0xfd} /* sign */,
+        {0x0401, 0xa1} /* capital letter io */,
+        {0x0402, 0xa2} /* capital letter dje (serbocroatian) */,
+        {0x0403, 0xa3} /* capital letter gje (macedonian) */,
+        {0x0404, 0xa4} /* capital letter ukrainian ie */,
+        {0x0405, 0xa5} /* capital letter dze (macedonian) */,
+        {0x0406, 0xa6} /* capital letter byelorussian-ukrainian i */,
+        {0x0407, 0xa7} /* capital letter yi (ukrainian) */,
+        {0x0408, 0xa8} /* capital letter je */,
+        {0x0409, 0xa9} /* capital letter lje */,
+        {0x040a, 0xaa} /* capital letter nje */,
+        {0x040b, 0xab} /* capital letter tshe (serbocroatian) */,
+        {0x040c, 0xac} /* capital letter kje (macedonian) */,
+        {0x040e, 0xae} /* capital letter short u (byelorussian) */,
+        {0x040f, 0xaf} /* capital letter dzhe */,
+        {0x0410, 0xb0} /* capital letter a */,
+        {0x0411, 0xb1} /* capital letter be */,
+        {0x0412, 0xb2} /* capital letter ve */,
+        {0x0413, 0xb3} /* capital letter ghe */,
+        {0x0414, 0xb4} /* capital letter de */,
+        {0x0415, 0xb5} /* capital letter ie */,
+        {0x0416, 0xb6} /* capital letter zhe */,
+        {0x0417, 0xb7} /* capital letter ze */,
+        {0x0418, 0xb8} /* capital letter i */,
+        {0x0419, 0xb9} /* capital letter short i */,
+        {0x041a, 0xba} /* capital letter ka */,
+        {0x041b, 0xbb} /* capital letter el */,
+        {0x041c, 0xbc} /* capital letter em */,
+        {0x041d, 0xbd} /* capital letter en */,
+        {0x041e, 0xbe} /* capital letter o */,
+        {0x041f, 0xbf} /* capital letter pe */,
+        {0x0420, 0xc0} /* capital letter er */,
+        {0x0421, 0xc1} /* capital letter es */,
+        {0x0422, 0xc2} /* capital letter te */,
+        {0x0423, 0xc3} /* capital letter u */,
+        {0x0424, 0xc4} /* capital letter ef */,
+        {0x0425, 0xc5} /* capital letter ha */,
+        {0x0426, 0xc6} /* capital letter tse */,
+        {0x0427, 0xc7} /* capital letter che */,
+        {0x0428, 0xc8} /* capital letter sha */,
+        {0x0429, 0xc9} /* capital letter shcha */,
+        {0x042a, 0xca} /* capital letter hard sign */,
+        {0x042b, 0xcb} /* capital letter yeru */,
+        {0x042c, 0xcc} /* capital letter soft sign */,
+        {0x042d, 0xcd} /* capital letter e */,
+        {0x042e, 0xce} /* capital letter yu */,
+        {0x042f, 0xcf} /* capital letter ya */,
+        {0x0430, 0xd0} /* small letter a */,
+        {0x0431, 0xd1} /* small letter be */,
+        {0x0432, 0xd2} /* small letter ve */,
+        {0x0433, 0xd3} /* small letter ghe */,
+        {0x0434, 0xd4} /* small letter de */,
+        {0x0435, 0xd5} /* small letter ie */,
+        {0x0436, 0xd6} /* small letter zhe */,
+        {0x0437, 0xd7} /* small letter ze */,
+        {0x0438, 0xd8} /* small letter i */,
+        {0x0439, 0xd9} /* small letter short i */,
+        {0x043a, 0xda} /* small letter ka */,
+        {0x043b, 0xdb} /* small letter el */,
+        {0x043c, 0xdc} /* small letter em */,
+        {0x043d, 0xdd} /* small letter en */,
+        {0x043e, 0xde} /* small letter o */,
+        {0x043f, 0xdf} /* small letter pe */,
+        {0x0440, 0xe0} /* small letter er */,
+        {0x0441, 0xe1} /* small letter es */,
+        {0x0442, 0xe2} /* small letter te */,
+        {0x0443, 0xe3} /* small letter u */,
+        {0x0444, 0xe4} /* small letter ef */,
+        {0x0445, 0xe5} /* small letter ha */,
+        {0x0446, 0xe6} /* small letter tse */,
+        {0x0447, 0xe7} /* small letter che */,
+        {0x0448, 0xe8} /* small letter sha */,
+        {0x0449, 0xe9} /* small letter shcha */,
+        {0x044a, 0xea} /* small letter hard sign */,
+        {0x044b, 0xeb} /* small letter yeru */,
+        {0x044c, 0xec} /* small letter soft sign */,
+        {0x044d, 0xed} /* small letter e */,
+        {0x044e, 0xee} /* small letter yu */,
+        {0x044f, 0xef} /* small letter ya */,
+        {0x0451, 0xf1} /* small letter io */,
+        {0x0452, 0xf2} /* small letter dje (serbocroatian) */,
+        {0x0453, 0xf3} /* small letter gje (macedonian) */,
+        {0x0454, 0xf4} /* small letter ukrainian ie */,
+        {0x0455, 0xf5} /* small letter dze (macedonian) */,
+        {0x0456, 0xf6} /* small letter byelorussian-ukrainian i */,
+        {0x0457, 0xf7} /* small letter yi (ukrainian) */,
+        {0x0458, 0xf8} /* small letter je */,
+        {0x0459, 0xf9} /* small letter lje */,
+        {0x045a, 0xfa} /* small letter nje */,
+        {0x045b, 0xfb} /* small letter tshe (serbocroatian) */,
+        {0x045c, 0xfc} /* small letter kje (macedonian) */,
+        {0x045e, 0xfe} /* small letter short u (byelorussian) */,
+        {0x045f, 0xff} /* small letter dzhe */,
+        {0x2116, 0xf0} /* sign */
+};
+
+/*
+#define cet_ucs4_to_iso_8859_5_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_5_extra[cet_ucs4_to_iso_8859_5_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_5 =   /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_5,         /* name of character set        */
+       cet_cs_alias_iso_8859_5,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_5,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_5,                /* first non standard character */
+       cet_ucs4_cnt_iso_8859_5,                /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_5_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_5_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_5_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 
+       0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, 
+       0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 
+       0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 
+       0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 
+       0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 
+       0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 
+       0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 
+       0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 
+       0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 
+       0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 
+       0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_6.h b/gpsbabel/cet/iso_8859_6.h
new file mode 100644 (file)
index 0000000..dbd7730
--- /dev/null
@@ -0,0 +1,173 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO-8859-6" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_6_h
+#define iso_8859_6_h
+
+#define cet_cs_name_iso_8859_6 "ISO-8859-6"
+
+const char *cet_cs_alias_iso_8859_6[] = 
+{
+       "ISO-8859-6", "arabic", "ASMO-708", "csISOLatinArabic", 
+       "ECMA-114", "ISO8859-6", "iso-ir-127", "ISO_8859-6", 
+       "ISO_8859-6:1987", NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_6 161
+#define cet_ucs4_cnt_iso_8859_6 82
+
+const int cet_ucs4_map_iso_8859_6[cet_ucs4_cnt_iso_8859_6] =
+{
+           -1,     -1,     -1, 0x00a4,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1, 0x060c, 0x00ad,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1, 0x061b,     -1,     -1,     -1, 0x061f,     -1, 
+       0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 
+       0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, 0x0630, 
+       0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, 0x0638, 
+       0x0639, 0x063a,     -1,     -1,     -1,     -1,     -1, 0x0640, 
+       0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, 0x0648, 
+       0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, 0x0650, 
+       0x0651, 0x0652
+};
+
+#define cet_ucs4_to_iso_8859_6_ct 48
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_6_links[cet_ucs4_to_iso_8859_6_ct] =
+{
+        {0x060c, 0xac} /* comma */,
+        {0x061b, 0xbb} /* semicolon */,
+        {0x061f, 0xbf} /* question mark */,
+        {0x0621, 0xc1} /* letter hamza */,
+        {0x0622, 0xc2} /* letter alef with madda above */,
+        {0x0623, 0xc3} /* letter alef with hamza above */,
+        {0x0624, 0xc4} /* letter waw with hamza above */,
+        {0x0625, 0xc5} /* letter alef with hamza below */,
+        {0x0626, 0xc6} /* letter yeh with hamza above */,
+        {0x0627, 0xc7} /* letter alef */,
+        {0x0628, 0xc8} /* letter beh */,
+        {0x0629, 0xc9} /* letter teh marbuta */,
+        {0x062a, 0xca} /* letter teh */,
+        {0x062b, 0xcb} /* letter theh */,
+        {0x062c, 0xcc} /* letter jeem */,
+        {0x062d, 0xcd} /* letter hah */,
+        {0x062e, 0xce} /* letter khah */,
+        {0x062f, 0xcf} /* letter dal */,
+        {0x0630, 0xd0} /* letter thal */,
+        {0x0631, 0xd1} /* letter reh */,
+        {0x0632, 0xd2} /* letter zain */,
+        {0x0633, 0xd3} /* letter seen */,
+        {0x0634, 0xd4} /* letter sheen */,
+        {0x0635, 0xd5} /* letter sad */,
+        {0x0636, 0xd6} /* letter dad */,
+        {0x0637, 0xd7} /* letter tah */,
+        {0x0638, 0xd8} /* letter zah */,
+        {0x0639, 0xd9} /* letter ain */,
+        {0x063a, 0xda} /* letter ghain */,
+        {0x0640, 0xe0} /* tatweel */,
+        {0x0641, 0xe1} /* letter feh */,
+        {0x0642, 0xe2} /* letter qaf */,
+        {0x0643, 0xe3} /* letter kaf */,
+        {0x0644, 0xe4} /* letter lam */,
+        {0x0645, 0xe5} /* letter meem */,
+        {0x0646, 0xe6} /* letter noon */,
+        {0x0647, 0xe7} /* letter heh */,
+        {0x0648, 0xe8} /* letter waw */,
+        {0x0649, 0xe9} /* letter alef maksura */,
+        {0x064a, 0xea} /* letter yeh */,
+        {0x064b, 0xeb} /* fathatan */,
+        {0x064c, 0xec} /* dammatan */,
+        {0x064d, 0xed} /* kasratan */,
+        {0x064e, 0xee} /* fatha */,
+        {0x064f, 0xef} /* damma */,
+        {0x0650, 0xf0} /* kasra */,
+        {0x0651, 0xf1} /* shadda */,
+        {0x0652, 0xf2} /* sukun */
+};
+
+/*
+#define cet_ucs4_to_iso_8859_6_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_6_extra[cet_ucs4_to_iso_8859_6_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_6 =   /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_6,         /* name of character set        */
+       cet_cs_alias_iso_8859_6,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_6,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_6,                /* first non standard character */
+       cet_ucs4_cnt_iso_8859_6,                /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_6_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_6_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_6_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0,     -1,     -1,     -1, 0x00a4,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1, 0x060c, 0x00ad,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1, 0x061b,     -1,     -1,     -1, 0x061f, 
+           -1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 
+       0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, 
+       0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, 
+       0x0638, 0x0639, 0x063a,     -1,     -1,     -1,     -1,     -1, 
+       0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, 
+       0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, 
+       0x0650, 0x0651, 0x0652,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_7.h b/gpsbabel/cet/iso_8859_7.h
new file mode 100644 (file)
index 0000000..09a6f50
--- /dev/null
@@ -0,0 +1,199 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO-8859-7" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_7_h
+#define iso_8859_7_h
+
+#define cet_cs_name_iso_8859_7 "ISO-8859-7"
+
+const char *cet_cs_alias_iso_8859_7[] = 
+{
+       "ISO-8859-7", "csISOLatinGreek", "ECMA-118", "ELOT_928", 
+       "greek", "greek8", "ISO8859-7", "iso-ir-126", 
+       "ISO_8859-7", "ISO_8859-7:1987", NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_7 161
+#define cet_ucs4_cnt_iso_8859_7 94
+
+const int cet_ucs4_map_iso_8859_7[cet_ucs4_cnt_iso_8859_7] =
+{
+       0x201b, 0x2019, 0x00a3,     -1,     -1, 0x00a6, 0x00a7, 0x00a8, 
+       0x00a9,     -1, 0x00ab, 0x00ac, 0x00ad,     -1, 0x2014, 0x00b0, 
+       0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x0385, 0x0386, 0x00b7, 0x0388, 
+       0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, 0x0390, 
+       0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 
+       0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 
+       0x03a1,     -1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 
+       0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03b0, 
+       0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 
+       0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 
+       0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 
+       0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce
+};
+
+#define cet_ucs4_to_iso_8859_7_ct 73
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_7_links[cet_ucs4_to_iso_8859_7_ct] =
+{
+        {0x0385, 0xb5} /* accent and diaeresis (tonos and dialytika) */,
+        {0x0386, 0xb6} /* capital letter alpha with acute */,
+        {0x0388, 0xb8} /* capital letter epsilon with acute */,
+        {0x0389, 0xb9} /* capital letter eta with acute */,
+        {0x038a, 0xba} /* capital letter iota with acute */,
+        {0x038c, 0xbc} /* capital letter omicron with acute */,
+        {0x038e, 0xbe} /* capital letter upsilon with acute */,
+        {0x038f, 0xbf} /* capital letter omega with acute */,
+        {0x0390, 0xc0} /* small letter iota with acute and diaeresis */,
+        {0x0391, 0xc1} /* capital letter alpha */,
+        {0x0392, 0xc2} /* capital letter beta */,
+        {0x0393, 0xc3} /* capital letter gamma */,
+        {0x0394, 0xc4} /* capital letter delta */,
+        {0x0395, 0xc5} /* capital letter epsilon */,
+        {0x0396, 0xc6} /* capital letter zeta */,
+        {0x0397, 0xc7} /* capital letter eta */,
+        {0x0398, 0xc8} /* capital letter theta */,
+        {0x0399, 0xc9} /* capital letter iota */,
+        {0x039a, 0xca} /* capital letter kappa */,
+        {0x039b, 0xcb} /* capital letter lamda */,
+        {0x039c, 0xcc} /* capital letter mu */,
+        {0x039d, 0xcd} /* capital letter nu */,
+        {0x039e, 0xce} /* capital letter xi */,
+        {0x039f, 0xcf} /* capital letter omicron */,
+        {0x03a0, 0xd0} /* capital letter pi */,
+        {0x03a1, 0xd1} /* capital letter rho */,
+        {0x03a3, 0xd3} /* capital letter sigma */,
+        {0x03a4, 0xd4} /* capital letter tau */,
+        {0x03a5, 0xd5} /* capital letter upsilon */,
+        {0x03a6, 0xd6} /* capital letter phi */,
+        {0x03a7, 0xd7} /* capital letter chi */,
+        {0x03a8, 0xd8} /* capital letter psi */,
+        {0x03a9, 0xd9} /* capital letter omega */,
+        {0x03aa, 0xda} /* capital letter iota with diaeresis */,
+        {0x03ab, 0xdb} /* capital letter upsilon with diaeresis */,
+        {0x03ac, 0xdc} /* small letter alpha with acute */,
+        {0x03ad, 0xdd} /* small letter epsilon with acute */,
+        {0x03ae, 0xde} /* small letter eta with acute */,
+        {0x03af, 0xdf} /* small letter iota with acute */,
+        {0x03b0, 0xe0} /* small letter upsilon with acute and diaeresis */,
+        {0x03b1, 0xe1} /* small letter alpha */,
+        {0x03b2, 0xe2} /* small letter beta */,
+        {0x03b3, 0xe3} /* small letter gamma */,
+        {0x03b4, 0xe4} /* small letter delta */,
+        {0x03b5, 0xe5} /* small letter epsilon */,
+        {0x03b6, 0xe6} /* small letter zeta */,
+        {0x03b7, 0xe7} /* small letter eta */,
+        {0x03b8, 0xe8} /* small letter theta */,
+        {0x03b9, 0xe9} /* small letter iota */,
+        {0x03ba, 0xea} /* small letter kappa */,
+        {0x03bb, 0xeb} /* small letter lamda */,
+        {0x03bc, 0xec} /* small letter mu */,
+        {0x03bd, 0xed} /* small letter nu */,
+        {0x03be, 0xee} /* small letter xi */,
+        {0x03bf, 0xef} /* small letter omicron */,
+        {0x03c0, 0xf0} /* small letter pi */,
+        {0x03c1, 0xf1} /* small letter rho */,
+        {0x03c2, 0xf2} /* small letter final sigma */,
+        {0x03c3, 0xf3} /* small letter sigma */,
+        {0x03c4, 0xf4} /* small letter tau */,
+        {0x03c5, 0xf5} /* small letter upsilon */,
+        {0x03c6, 0xf6} /* small letter phi */,
+        {0x03c7, 0xf7} /* small letter chi */,
+        {0x03c8, 0xf8} /* small letter psi */,
+        {0x03c9, 0xf9} /* small letter omega */,
+        {0x03ca, 0xfa} /* small letter iota with diaeresis */,
+        {0x03cb, 0xfb} /* small letter upsilon with diaeresis */,
+        {0x03cc, 0xfc} /* small letter omicron with acute */,
+        {0x03cd, 0xfd} /* small letter upsilon with acute */,
+        {0x03ce, 0xfe} /* small letter omega with acute */,
+        {0x2014, 0xaf} /* dash */,
+        {0x2019, 0xa2} /* single quotation mark */,
+        {0x201b, 0xa1} /* high-reversed-9 quotation mark */
+};
+
+/*
+#define cet_ucs4_to_iso_8859_7_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_7_extra[cet_ucs4_to_iso_8859_7_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_7 =   /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_7,         /* name of character set        */
+       cet_cs_alias_iso_8859_7,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_7,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_7,                /* first non standard character */
+       cet_ucs4_cnt_iso_8859_7,                /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_7_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_7_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_7_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x201b, 0x2019, 0x00a3,     -1,     -1, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9,     -1, 0x00ab, 0x00ac, 0x00ad,     -1, 0x2014, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x0385, 0x0386, 0x00b7, 
+       0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, 
+       0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 
+       0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 
+       0x03a0, 0x03a1,     -1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 
+       0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, 
+       0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 
+       0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 
+       0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 
+       0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_8.h b/gpsbabel/cet/iso_8859_8.h
new file mode 100644 (file)
index 0000000..e22f04a
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO-8859-8" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_8_h
+#define iso_8859_8_h
+
+#define cet_cs_name_iso_8859_8 "ISO-8859-8"
+
+const char *cet_cs_alias_iso_8859_8[] = 
+{
+       "ISO-8859-8", "csISOLatinHebrew", "hebrew", "ISO8859-8", 
+       "iso-ir-138", "ISO_8859-8", "ISO_8859-8:1988", NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_8 161
+#define cet_ucs4_cnt_iso_8859_8 90
+
+const int cet_ucs4_map_iso_8859_8[cet_ucs4_cnt_iso_8859_8] =
+{
+           -1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 
+       0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x203e, 0x00b0, 
+       0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 
+       0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1, 0x2017, 0x05d0, 
+       0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 
+       0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 0x05e0, 
+       0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 
+       0x05e9, 0x05ea
+};
+
+#define cet_ucs4_to_iso_8859_8_ct 31
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_8_links[cet_ucs4_to_iso_8859_8_ct] =
+{
+        {0x00d7, 0xaa} /* sign */,
+        {0x00f7, 0xba} /* sign */,
+        {0x05d0, 0xe0} /* letter alef */,
+        {0x05d1, 0xe1} /* letter bet */,
+        {0x05d2, 0xe2} /* letter gimel */,
+        {0x05d3, 0xe3} /* letter dalet */,
+        {0x05d4, 0xe4} /* letter he */,
+        {0x05d5, 0xe5} /* letter vav */,
+        {0x05d6, 0xe6} /* letter zayin */,
+        {0x05d7, 0xe7} /* letter het */,
+        {0x05d8, 0xe8} /* letter tet */,
+        {0x05d9, 0xe9} /* letter yod */,
+        {0x05da, 0xea} /* letter final kaf */,
+        {0x05db, 0xeb} /* letter kaf */,
+        {0x05dc, 0xec} /* letter lamed */,
+        {0x05dd, 0xed} /* letter final mem */,
+        {0x05de, 0xee} /* letter mem */,
+        {0x05df, 0xef} /* letter final nun */,
+        {0x05e0, 0xf0} /* letter nun */,
+        {0x05e1, 0xf1} /* letter samekh */,
+        {0x05e2, 0xf2} /* letter ayin */,
+        {0x05e3, 0xf3} /* letter final pe */,
+        {0x05e4, 0xf4} /* letter pe */,
+        {0x05e5, 0xf5} /* letter final tsadi */,
+        {0x05e6, 0xf6} /* letter tsadi */,
+        {0x05e7, 0xf7} /* letter qof */,
+        {0x05e8, 0xf8} /* letter resh */,
+        {0x05e9, 0xf9} /* letter shin */,
+        {0x05ea, 0xfa} /* letter tav */,
+        {0x2017, 0xdf} /* low line */,
+        {0x203e, 0xaf} /* overline */
+};
+
+/*
+#define cet_ucs4_to_iso_8859_8_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_8_extra[cet_ucs4_to_iso_8859_8_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_8 =   /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_8,         /* name of character set        */
+       cet_cs_alias_iso_8859_8,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_8,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_8,                /* first non standard character */
+       cet_ucs4_cnt_iso_8859_8,                /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_8_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_8_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_8_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0,     -1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x203e, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1, 0x2017, 
+       0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 
+       0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 
+       0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 
+       0x05e8, 0x05e9, 0x05ea,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_9.h b/gpsbabel/cet/iso_8859_9.h
new file mode 100644 (file)
index 0000000..0fc4c21
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO-8859-9" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_9_h
+#define iso_8859_9_h
+
+#define cet_cs_name_iso_8859_9 "ISO-8859-9"
+
+const char *cet_cs_alias_iso_8859_9[] = 
+{
+       "ISO-8859-9", "csISOLatin5", "ISO8859-9", "iso-ir-148", 
+       "ISO_8859-9", "ISO_8859-9:1989", "l5", "latin5",
+       NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_9 208
+#define cet_ucs4_cnt_iso_8859_9 48
+
+const int cet_ucs4_map_iso_8859_9[cet_ucs4_cnt_iso_8859_9] =
+{
+       0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 
+       0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 
+       0x00e8, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, 
+       0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 
+       0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff
+};
+
+#define cet_ucs4_to_iso_8859_9_ct 9
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_9_links[cet_ucs4_to_iso_8859_9_ct] =
+{
+        {0x0117, 0xec} /* small letter e with dot above */,
+        {0x0119, 0xea} /* small letter e with ogonek */,
+        {0x011e, 0xd0} /* capital letter g with breve */,
+        {0x011f, 0xf0} /* small letter g with breve */,
+        {0x012b, 0xef} /* small letter i with macron */,
+        {0x0130, 0xdd} /* capital letter i with dot above */,
+        {0x0131, 0xfd} /* small letter i dotless */,
+        {0x015e, 0xde} /* capital letter s with cedilla */,
+        {0x015f, 0xfe} /* small letter s with cedilla */
+};
+
+/*
+#define cet_ucs4_to_iso_8859_9_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_9_extra[cet_ucs4_to_iso_8859_9_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_9 =   /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_9,         /* name of character set        */
+       cet_cs_alias_iso_8859_9,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_9,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_9,                /* first non standard character */
+       cet_ucs4_cnt_iso_8859_9,                /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_9_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_9_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_9_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 
+       0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 
+       0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 
+       0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+       0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 
+       0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 
+       0x00e8, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, 
+       0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 
+       0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/iso_8859_supp.h b/gpsbabel/cet/iso_8859_supp.h
new file mode 100644 (file)
index 0000000..1c7f057
--- /dev/null
@@ -0,0 +1,212 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "ISO_8859-supp" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef iso_8859_supp_h
+#define iso_8859_supp_h
+
+#define cet_cs_name_iso_8859_supp "ISO_8859-supp"
+
+const char *cet_cs_alias_iso_8859_supp[] = 
+{
+       "ISO_8859-supp", "iso-ir-154", "latin1-2-5", NULL
+};
+
+#define cet_ucs4_ofs_iso_8859_supp 160
+#define cet_ucs4_cnt_iso_8859_supp 96
+
+const int cet_ucs4_map_iso_8859_supp[cet_ucs4_cnt_iso_8859_supp] =
+{
+           -1,     -1, 0x0100, 0x0108, 0x010a,     -1, 0x0116, 0x0112, 
+       0x011c, 0x2018, 0x201c, 0x2122, 0x2190, 0x2191, 0x2192, 0x2193, 
+           -1,     -1, 0x0101, 0x0109, 0x010b, 0x00f0, 0x0117, 0x0113, 
+       0x011d, 0x2019, 0x201d, 0x266a, 0x215b, 0x215c, 0x215d, 0x215e, 
+           -1, 0x011e, 0x0120, 0x0122, 0x0124, 0x0126, 0x0128, 0x0130, 
+       0x012a, 0x012e, 0x0132, 0x0134, 0x0136, 0x013b, 0x013f, 0x0145, 
+       0x2014, 0x014a, 0x014c, 0x0152, 0x0156, 0x015c, 0x0166, 0x00de, 
+       0x0168, 0x016c, 0x016a, 0x0172, 0x0174, 0x00dd, 0x0176, 0x0178, 
+       0x2126, 0x011f, 0x0121, 0x0123, 0x0125, 0x0127, 0x0129, 0x0131, 
+       0x012b, 0x012f, 0x0133, 0x0135, 0x0137, 0x013c, 0x0140, 0x0146, 
+       0x0138, 0x014b, 0x014d, 0x0153, 0x0157, 0x015d, 0x0167, 0x00fe, 
+       0x0169, 0x016d, 0x016b, 0x0173, 0x0175, 0x00fd, 0x0177, 0x0149
+};
+
+#define cet_ucs4_to_iso_8859_supp_ct 88
+
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_supp_links[cet_ucs4_to_iso_8859_supp_ct] =
+{
+        {0x00de, 0xd7} /* capital letter thorn (icelandic) */,
+        {0x00f0, 0xb5} /* small letter eth (icelandic) */,
+        {0x00fe, 0xf7} /* small letter thorn (icelandic) */,
+        {0x0100, 0xa2} /* capital letter a with macron */,
+        {0x0101, 0xb2} /* small letter a with macron */,
+        {0x0108, 0xa3} /* capital letter c with circumflex */,
+        {0x0109, 0xb3} /* small letter c with circumflex */,
+        {0x010a, 0xa4} /* capital letter c with dot above */,
+        {0x010b, 0xb4} /* small letter c with dot above */,
+        {0x0112, 0xa7} /* capital letter e with macron */,
+        {0x0113, 0xb7} /* small letter e with macron */,
+        {0x0116, 0xa6} /* capital letter e with dot above */,
+        {0x0117, 0xb6} /* small letter e with dot above */,
+        {0x011c, 0xa8} /* capital letter g with circumflex */,
+        {0x011d, 0xb8} /* small letter g with circumflex */,
+        {0x011e, 0xc1} /* capital letter g with breve */,
+        {0x011f, 0xe1} /* small letter g with breve */,
+        {0x0120, 0xc2} /* capital letter g with dot above */,
+        {0x0121, 0xe2} /* small letter g with dot above */,
+        {0x0122, 0xc3} /* capital letter g with cedilla */,
+        {0x0123, 0xe3} /* small letter g with cedilla */,
+        {0x0124, 0xc4} /* capital letter h with circumflex */,
+        {0x0125, 0xe4} /* small letter h with circumflex */,
+        {0x0126, 0xc5} /* capital letter h with stroke */,
+        {0x0127, 0xe5} /* small letter h with stroke */,
+        {0x0128, 0xc6} /* capital letter i with tilde */,
+        {0x0129, 0xe6} /* small letter i with tilde */,
+        {0x012a, 0xc8} /* capital letter i with macron */,
+        {0x012b, 0xe8} /* small letter i with macron */,
+        {0x012e, 0xc9} /* capital letter i with ogonek */,
+        {0x012f, 0xe9} /* small letter i with ogonek */,
+        {0x0130, 0xc7} /* capital letter i with dot above */,
+        {0x0131, 0xe7} /* small letter i dotless */,
+        {0x0132, 0xca} /* capital ligature ij */,
+        {0x0133, 0xea} /* small ligature ij */,
+        {0x0134, 0xcb} /* capital letter j with circumflex */,
+        {0x0135, 0xeb} /* small letter j with circumflex */,
+        {0x0136, 0xcc} /* capital letter k with cedilla */,
+        {0x0137, 0xec} /* small letter k with cedilla */,
+        {0x0138, 0xf0} /* small letter kra (greenlandic) */,
+        {0x013b, 0xcd} /* capital letter l with cedilla */,
+        {0x013c, 0xed} /* small letter l with cedilla */,
+        {0x013f, 0xce} /* capital letter l with middle dot */,
+        {0x0140, 0xee} /* small letter l with middle dot */,
+        {0x0145, 0xcf} /* capital letter n with cedilla */,
+        {0x0146, 0xef} /* small letter n with cedilla */,
+        {0x0149, 0xff} /* small letter n preceded by apostrophe */,
+        {0x014a, 0xd1} /* capital letter eng (lappish) */,
+        {0x014b, 0xf1} /* small letter eng (lappish) */,
+        {0x014c, 0xd2} /* capital letter o with macron */,
+        {0x014d, 0xf2} /* small letter o with macron */,
+        {0x0152, 0xd3} /* capital ligature oe */,
+        {0x0153, 0xf3} /* small ligature oe */,
+        {0x0156, 0xd4} /* capital letter r with cedilla */,
+        {0x0157, 0xf4} /* small letter r with cedilla */,
+        {0x015c, 0xd5} /* capital letter s with circumflex */,
+        {0x015d, 0xf5} /* small letter s with circumflex */,
+        {0x0166, 0xd6} /* capital letter t with stroke */,
+        {0x0167, 0xf6} /* small letter t with stroke */,
+        {0x0168, 0xd8} /* capital letter u with tilde */,
+        {0x0169, 0xf8} /* small letter u with tilde */,
+        {0x016a, 0xda} /* capital letter u with macron */,
+        {0x016b, 0xfa} /* small letter u with macron */,
+        {0x016c, 0xd9} /* capital letter u with breve */,
+        {0x016d, 0xf9} /* small letter u with breve */,
+        {0x0172, 0xdb} /* capital letter u with ogonek */,
+        {0x0173, 0xfb} /* small letter u with ogonek */,
+        {0x0174, 0xdc} /* capital letter w with circumflex */,
+        {0x0175, 0xfc} /* small letter w with circumflex */,
+        {0x0176, 0xde} /* capital letter y with circumflex */,
+        {0x0177, 0xfe} /* small letter y with circumflex */,
+        {0x0178, 0xdf} /* capital letter y with diaeresis */,
+        {0x2014, 0xd0} /* dash */,
+        {0x2018, 0xa9} /* single quotation mark */,
+        {0x2019, 0xb9} /* single quotation mark */,
+        {0x201c, 0xaa} /* double quotation mark */,
+        {0x201d, 0xba} /* double quotation mark */,
+        {0x2122, 0xab} /* mark sign */,
+        {0x2126, 0xe0} /* sign */,
+        {0x215b, 0xbc} /* fraction one eighth */,
+        {0x215c, 0xbd} /* fraction three eighths */,
+        {0x215d, 0xbe} /* fraction five eighths */,
+        {0x215e, 0xbf} /* fraction seven eighths */,
+        {0x2190, 0xac} /* arrow */,
+        {0x2191, 0xad} /* arrow */,
+        {0x2192, 0xae} /* arrow */,
+        {0x2193, 0xaf} /* arrow */,
+        {0x266a, 0xbb} /* note */
+};
+
+/*
+#define cet_ucs4_to_iso_8859_supp_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_iso_8859_supp_extra[cet_ucs4_to_iso_8859_supp_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_iso_8859_supp =        /* defined in cet.h */
+{      
+       cet_cs_name_iso_8859_supp,              /* name of character set        */
+       cet_cs_alias_iso_8859_supp,             /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_iso_8859_supp,             /* char to UCS-4 value table    */
+       cet_ucs4_ofs_iso_8859_supp,             /* first non standard character */
+       cet_ucs4_cnt_iso_8859_supp,             /* number of values in table    */
+
+       cet_ucs4_to_iso_8859_supp_links,        /* UCS-4 to char links          */
+       cet_ucs4_to_iso_8859_supp_ct,           /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int iso_8859_supp_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+           -1,     -1, 0x0100, 0x0108, 0x010a,     -1, 0x0116, 0x0112, 
+       0x011c, 0x2018, 0x201c, 0x2122, 0x2190, 0x2191, 0x2192, 0x2193, 
+           -1,     -1, 0x0101, 0x0109, 0x010b, 0x00f0, 0x0117, 0x0113, 
+       0x011d, 0x2019, 0x201d, 0x266a, 0x215b, 0x215c, 0x215d, 0x215e, 
+           -1, 0x011e, 0x0120, 0x0122, 0x0124, 0x0126, 0x0128, 0x0130, 
+       0x012a, 0x012e, 0x0132, 0x0134, 0x0136, 0x013b, 0x013f, 0x0145, 
+       0x2014, 0x014a, 0x014c, 0x0152, 0x0156, 0x015c, 0x0166, 0x00de, 
+       0x0168, 0x016c, 0x016a, 0x0172, 0x0174, 0x00dd, 0x0176, 0x0178, 
+       0x2126, 0x011f, 0x0121, 0x0123, 0x0125, 0x0127, 0x0129, 0x0131, 
+       0x012b, 0x012f, 0x0133, 0x0135, 0x0137, 0x013c, 0x0140, 0x0146, 
+       0x0138, 0x014b, 0x014d, 0x0153, 0x0157, 0x015d, 0x0167, 0x00fe, 
+       0x0169, 0x016d, 0x016b, 0x0173, 0x0175, 0x00fd, 0x0177, 0x0149
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/it.h b/gpsbabel/cet/it.h
new file mode 100644 (file)
index 0000000..178d100
--- /dev/null
@@ -0,0 +1,134 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "IT" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef it_h
+#define it_h
+
+#define cet_cs_name_it "IT"
+
+const char *cet_cs_alias_it[] = 
+{
+       "IT", "ISO646-IT", "iso-ir-15", NULL
+};
+
+#define cet_ucs4_ofs_it 35
+#define cet_ucs4_cnt_it 93
+
+const int cet_ucs4_map_it[cet_ucs4_cnt_it] =
+{
+       0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 
+       0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 
+       0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 
+       0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x00a7, 0x0041, 0x0042, 
+       0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 
+       0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 
+       0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 
+       0x00b0, 0x00e7, 0x00e9, 0x005e, 0x005f, 0x00f9, 0x0061, 0x0062, 
+       0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 
+       0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 
+       0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 
+       0x00e0, 0x00f2, 0x00e8, 0x00ec, 0x007f
+};
+
+#define cet_ucs4_to_it_ct 10
+
+const cet_ucs4_link_t cet_ucs4_to_it_links[cet_ucs4_to_it_ct] =
+{
+        {0x00a3, 0x23} /* sign */,
+        {0x00a7, 0x40} /* sign */,
+        {0x00b0, 0x5b} /* sign */,
+        {0x00e0, 0x7b} /* small letter a with grave */,
+        {0x00e7, 0x5c} /* small letter c with cedilla */,
+        {0x00e8, 0x7d} /* small letter e with grave */,
+        {0x00e9, 0x5d} /* small letter e with acute */,
+        {0x00ec, 0x7e} /* small letter i with grave */,
+        {0x00f2, 0x7c} /* small letter o with grave */,
+        {0x00f9, 0x60} /* small letter u with grave */
+};
+
+/*
+#define cet_ucs4_to_it_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_it_extra[cet_ucs4_to_it_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_it =   /* defined in cet.h */
+{      
+       cet_cs_name_it,         /* name of character set        */
+       cet_cs_alias_it,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_it,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_it,                /* first non standard character */
+       cet_ucs4_cnt_it,                /* number of values in table    */
+
+       cet_ucs4_to_it_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_it_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int it_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x00a7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00b0, 0x00e7, 0x00e9, 0x005e, 0x005f, 
+       0x00f9, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e0, 0x00f2, 0x00e8, 0x00ec, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/jis_c6220_1969_ro.h b/gpsbabel/cet/jis_c6220_1969_ro.h
new file mode 100644 (file)
index 0000000..2227d0f
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "JIS_C6220-1969-ro" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef jis_c6220_1969_ro_h
+#define jis_c6220_1969_ro_h
+
+#define cet_cs_name_jis_c6220_1969_ro "JIS_C6220-1969-ro"
+
+const char *cet_cs_alias_jis_c6220_1969_ro[] = 
+{
+       "JIS_C6220-1969-ro", "csISO14JISC6220ro", "ISO646-JP", "iso-ir-14", 
+       "jp", NULL
+};
+
+#define cet_ucs4_ofs_jis_c6220_1969_ro 92
+#define cet_ucs4_cnt_jis_c6220_1969_ro 36
+
+const int cet_ucs4_map_jis_c6220_1969_ro[cet_ucs4_cnt_jis_c6220_1969_ro] =
+{
+       0x00a5, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 
+       0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 
+       0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 
+       0x007c, 0x007d, 0x203e, 0x007f
+};
+
+#define cet_ucs4_to_jis_c6220_1969_ro_ct 2
+
+const cet_ucs4_link_t cet_ucs4_to_jis_c6220_1969_ro_links[cet_ucs4_to_jis_c6220_1969_ro_ct] =
+{
+        {0x00a5, 0x5c} /* sign */,
+        {0x203e, 0x7e} /* overline */
+};
+
+/*
+#define cet_ucs4_to_jis_c6220_1969_ro_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_jis_c6220_1969_ro_extra[cet_ucs4_to_jis_c6220_1969_ro_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_jis_c6220_1969_ro =    /* defined in cet.h */
+{      
+       cet_cs_name_jis_c6220_1969_ro,          /* name of character set        */
+       cet_cs_alias_jis_c6220_1969_ro,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_jis_c6220_1969_ro,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_jis_c6220_1969_ro,         /* first non standard character */
+       cet_ucs4_cnt_jis_c6220_1969_ro,         /* number of values in table    */
+
+       cet_ucs4_to_jis_c6220_1969_ro_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_jis_c6220_1969_ro_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int jis_c6220_1969_ro_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x00a5, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/jis_x0201.h b/gpsbabel/cet/jis_x0201.h
new file mode 100644 (file)
index 0000000..0675cb3
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "JIS_X0201" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef jis_x0201_h
+#define jis_x0201_h
+
+#define cet_cs_name_jis_x0201 "JIS_X0201"
+
+const char *cet_cs_alias_jis_x0201[] = 
+{
+       "JIS_X0201", "csHalfWidthKatakana", "JIS0201", "JISX0201-1976", 
+       "JISX0201.1976-0", "X0201", NULL
+};
+
+#define cet_ucs4_ofs_jis_x0201 92
+#define cet_ucs4_cnt_jis_x0201 132
+
+const int cet_ucs4_map_jis_x0201[cet_ucs4_cnt_jis_x0201] =
+{
+       0x00a5, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 
+       0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 
+       0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 
+       0x007c, 0x007d, 0x203e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x009c, 0x009d, 0x009e, 0x009f,     -1, 0x3002, 0x300c, 0x300d, 
+       0x3001, 0x30fb, 0x30f2, 0x30a1, 0x30a3, 0x30a5, 0x30a7, 0x30a9, 
+       0x30e3, 0x30e5, 0x30e7, 0x30c3, 0x30fc, 0x30a2, 0x30a4, 0x30a6, 
+       0x30a8, 0x30aa, 0x30ab, 0x30ad, 0x30af, 0x30b1, 0x30b3, 0x30b5, 
+       0x30b7, 0x30b9, 0x30bb, 0x30bd, 0x30bf, 0x30c1, 0x30c4, 0x30c6, 
+       0x30c8, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d2, 
+       0x30d5, 0x30d8, 0x30db, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 
+       0x30e4, 0x30e6, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 
+       0x30ef, 0x30f3, 0x309b, 0x309c
+};
+
+#define cet_ucs4_to_jis_x0201_ct 65
+
+const cet_ucs4_link_t cet_ucs4_to_jis_x0201_links[cet_ucs4_to_jis_x0201_ct] =
+{
+        {0x00a5, 0x5c} /* sign */,
+        {0x203e, 0x7e} /* overline */,
+        {0x3001, 0xa4} /* comma */,
+        {0x3002, 0xa1} /* period */,
+        {0x300c, 0xa2} /* corner bracket */,
+        {0x300d, 0xa3} /* corner bracket */,
+        {0x309b, 0xde} /* voiced sound mark */,
+        {0x309c, 0xdf} /* semi-voiced sound mark */,
+        {0x30a1, 0xa7} /* letter small a */,
+        {0x30a2, 0xb1} /* letter a */,
+        {0x30a3, 0xa8} /* letter small i */,
+        {0x30a4, 0xb2} /* letter i */,
+        {0x30a5, 0xa9} /* letter small u */,
+        {0x30a6, 0xb3} /* letter u */,
+        {0x30a7, 0xaa} /* letter small e */,
+        {0x30a8, 0xb4} /* letter e */,
+        {0x30a9, 0xab} /* letter small o */,
+        {0x30aa, 0xb5} /* letter o */,
+        {0x30ab, 0xb6} /* letter ka */,
+        {0x30ad, 0xb7} /* letter ki */,
+        {0x30af, 0xb8} /* letter ku */,
+        {0x30b1, 0xb9} /* letter ke */,
+        {0x30b3, 0xba} /* letter ko */,
+        {0x30b5, 0xbb} /* letter sa */,
+        {0x30b7, 0xbc} /* letter si */,
+        {0x30b9, 0xbd} /* letter su */,
+        {0x30bb, 0xbe} /* letter se */,
+        {0x30bd, 0xbf} /* letter so */,
+        {0x30bf, 0xc0} /* letter ta */,
+        {0x30c1, 0xc1} /* letter ti */,
+        {0x30c3, 0xaf} /* letter small tu */,
+        {0x30c4, 0xc2} /* letter tu */,
+        {0x30c6, 0xc3} /* letter te */,
+        {0x30c8, 0xc4} /* letter to */,
+        {0x30ca, 0xc5} /* letter na */,
+        {0x30cb, 0xc6} /* letter ni */,
+        {0x30cc, 0xc7} /* letter nu */,
+        {0x30cd, 0xc8} /* letter ne */,
+        {0x30ce, 0xc9} /* letter no */,
+        {0x30cf, 0xca} /* letter ha */,
+        {0x30d2, 0xcb} /* letter hi */,
+        {0x30d5, 0xcc} /* letter hu */,
+        {0x30d8, 0xcd} /* letter he */,
+        {0x30db, 0xce} /* letter ho */,
+        {0x30de, 0xcf} /* letter ma */,
+        {0x30df, 0xd0} /* letter mi */,
+        {0x30e0, 0xd1} /* letter mu */,
+        {0x30e1, 0xd2} /* letter me */,
+        {0x30e2, 0xd3} /* letter mo */,
+        {0x30e3, 0xac} /* letter small ya */,
+        {0x30e4, 0xd4} /* letter ya */,
+        {0x30e5, 0xad} /* letter small yu */,
+        {0x30e6, 0xd5} /* letter yu */,
+        {0x30e7, 0xae} /* letter small yo */,
+        {0x30e8, 0xd6} /* letter yo */,
+        {0x30e9, 0xd7} /* letter ra */,
+        {0x30ea, 0xd8} /* letter ri */,
+        {0x30eb, 0xd9} /* letter ru */,
+        {0x30ec, 0xda} /* letter re */,
+        {0x30ed, 0xdb} /* letter ro */,
+        {0x30ef, 0xdc} /* letter wa */,
+        {0x30f2, 0xa6} /* letter wo */,
+        {0x30f3, 0xdd} /* letter n */,
+        {0x30fb, 0xa5} /* middle dot */,
+        {0x30fc, 0xb0} /* prolonged sound mark */
+};
+
+/*
+#define cet_ucs4_to_jis_x0201_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_jis_x0201_extra[cet_ucs4_to_jis_x0201_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_jis_x0201 =    /* defined in cet.h */
+{      
+       cet_cs_name_jis_x0201,          /* name of character set        */
+       cet_cs_alias_jis_x0201,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_jis_x0201,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_jis_x0201,         /* first non standard character */
+       cet_ucs4_cnt_jis_x0201,         /* number of values in table    */
+
+       cet_ucs4_to_jis_x0201_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_jis_x0201_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int jis_x0201_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x00a5, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+           -1, 0x3002, 0x300c, 0x300d, 0x3001, 0x30fb, 0x30f2, 0x30a1, 
+       0x30a3, 0x30a5, 0x30a7, 0x30a9, 0x30e3, 0x30e5, 0x30e7, 0x30c3, 
+       0x30fc, 0x30a2, 0x30a4, 0x30a6, 0x30a8, 0x30aa, 0x30ab, 0x30ad, 
+       0x30af, 0x30b1, 0x30b3, 0x30b5, 0x30b7, 0x30b9, 0x30bb, 0x30bd, 
+       0x30bf, 0x30c1, 0x30c4, 0x30c6, 0x30c8, 0x30ca, 0x30cb, 0x30cc, 
+       0x30cd, 0x30ce, 0x30cf, 0x30d2, 0x30d5, 0x30d8, 0x30db, 0x30de, 
+       0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e4, 0x30e6, 0x30e8, 0x30e9, 
+       0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ef, 0x30f3, 0x309b, 0x309c, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/jus_i_b1_002.h b/gpsbabel/cet/jus_i_b1_002.h
new file mode 100644 (file)
index 0000000..fc8c7e9
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "JUS_I.B1.002" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef jus_i_b1_002_h
+#define jus_i_b1_002_h
+
+#define cet_cs_name_jus_i_b1_002 "JUS_I.B1.002"
+
+const char *cet_cs_alias_jus_i_b1_002[] = 
+{
+       "JUS_I.B1.002", "ISO646-YU", "iso-ir-141", "js", 
+       "yu", NULL
+};
+
+#define cet_ucs4_ofs_jus_i_b1_002 64
+#define cet_ucs4_cnt_jus_i_b1_002 64
+
+const int cet_ucs4_map_jus_i_b1_002[cet_ucs4_cnt_jus_i_b1_002] =
+{
+       0x017d, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x0160, 0x0110, 0x0106, 0x010c, 0x005f, 
+       0x017e, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x0161, 0x0111, 0x0107, 0x010d, 0x007f
+};
+
+#define cet_ucs4_to_jus_i_b1_002_ct 10
+
+const cet_ucs4_link_t cet_ucs4_to_jus_i_b1_002_links[cet_ucs4_to_jus_i_b1_002_ct] =
+{
+        {0x0106, 0x5d} /* capital letter c with acute */,
+        {0x0107, 0x7d} /* small letter c with acute */,
+        {0x010c, 0x5e} /* capital letter c with caron */,
+        {0x010d, 0x7e} /* small letter c with caron */,
+        {0x0110, 0x5c} /* capital letter d with stroke */,
+        {0x0111, 0x7c} /* small letter d with stroke */,
+        {0x0160, 0x5b} /* capital letter s with caron */,
+        {0x0161, 0x7b} /* small letter s with caron */,
+        {0x017d, 0x40} /* capital letter z with caron */,
+        {0x017e, 0x60} /* small letter z with caron */
+};
+
+/*
+#define cet_ucs4_to_jus_i_b1_002_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_jus_i_b1_002_extra[cet_ucs4_to_jus_i_b1_002_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_jus_i_b1_002 = /* defined in cet.h */
+{      
+       cet_cs_name_jus_i_b1_002,               /* name of character set        */
+       cet_cs_alias_jus_i_b1_002,              /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_jus_i_b1_002,              /* char to UCS-4 value table    */
+       cet_ucs4_ofs_jus_i_b1_002,              /* first non standard character */
+       cet_ucs4_cnt_jus_i_b1_002,              /* number of values in table    */
+
+       cet_ucs4_to_jus_i_b1_002_links, /* UCS-4 to char links          */
+       cet_ucs4_to_jus_i_b1_002_ct,            /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int jus_i_b1_002_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x017d, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x0160, 0x0110, 0x0106, 0x010c, 0x005f, 
+       0x017e, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x0161, 0x0111, 0x0107, 0x010d, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/jus_i_b1_003_mac.h b/gpsbabel/cet/jus_i_b1_003_mac.h
new file mode 100644 (file)
index 0000000..7082a0d
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "JUS_I.B1.003-mac" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef jus_i_b1_003_mac_h
+#define jus_i_b1_003_mac_h
+
+#define cet_cs_name_jus_i_b1_003_mac "JUS_I.B1.003-mac"
+
+const char *cet_cs_alias_jus_i_b1_003_mac[] = 
+{
+       "JUS_I.B1.003-mac", "iso-ir-147", "macedonian", NULL
+};
+
+#define cet_ucs4_ofs_jus_i_b1_003_mac 64
+#define cet_ucs4_cnt_jus_i_b1_003_mac 64
+
+const int cet_ucs4_map_jus_i_b1_003_mac[cet_ucs4_cnt_jus_i_b1_003_mac] =
+{
+       0x0416, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0408, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+       0x041f, 0x0409, 0x0420, 0x0421, 0x0422, 0x0423, 0x0412, 0x040a, 
+       0x040f, 0x0405, 0x0417, 0x0428, 0x0403, 0x040c, 0x0427, 0x005f, 
+       0x0436, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0458, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x0459, 0x0440, 0x0441, 0x0442, 0x0443, 0x0432, 0x045a, 
+       0x045f, 0x0455, 0x0437, 0x0448, 0x0453, 0x045c, 0x0447, 0x007f
+};
+
+#define cet_ucs4_to_jus_i_b1_003_mac_ct 62
+
+const cet_ucs4_link_t cet_ucs4_to_jus_i_b1_003_mac_links[cet_ucs4_to_jus_i_b1_003_mac_ct] =
+{
+        {0x0403, 0x5c} /* capital letter gje (macedonian) */,
+        {0x0405, 0x59} /* capital letter dze (macedonian) */,
+        {0x0408, 0x4a} /* capital letter je */,
+        {0x0409, 0x51} /* capital letter lje */,
+        {0x040a, 0x57} /* capital letter nje */,
+        {0x040c, 0x5d} /* capital letter kje (macedonian) */,
+        {0x040f, 0x58} /* capital letter dzhe */,
+        {0x0410, 0x41} /* capital letter a */,
+        {0x0411, 0x42} /* capital letter be */,
+        {0x0412, 0x56} /* capital letter ve */,
+        {0x0413, 0x47} /* capital letter ghe */,
+        {0x0414, 0x44} /* capital letter de */,
+        {0x0415, 0x45} /* capital letter ie */,
+        {0x0416, 0x40} /* capital letter zhe */,
+        {0x0417, 0x5a} /* capital letter ze */,
+        {0x0418, 0x49} /* capital letter i */,
+        {0x041a, 0x4b} /* capital letter ka */,
+        {0x041b, 0x4c} /* capital letter el */,
+        {0x041c, 0x4d} /* capital letter em */,
+        {0x041d, 0x4e} /* capital letter en */,
+        {0x041e, 0x4f} /* capital letter o */,
+        {0x041f, 0x50} /* capital letter pe */,
+        {0x0420, 0x52} /* capital letter er */,
+        {0x0421, 0x53} /* capital letter es */,
+        {0x0422, 0x54} /* capital letter te */,
+        {0x0423, 0x55} /* capital letter u */,
+        {0x0424, 0x46} /* capital letter ef */,
+        {0x0425, 0x48} /* capital letter ha */,
+        {0x0426, 0x43} /* capital letter tse */,
+        {0x0427, 0x5e} /* capital letter che */,
+        {0x0428, 0x5b} /* capital letter sha */,
+        {0x0430, 0x61} /* small letter a */,
+        {0x0431, 0x62} /* small letter be */,
+        {0x0432, 0x76} /* small letter ve */,
+        {0x0433, 0x67} /* small letter ghe */,
+        {0x0434, 0x64} /* small letter de */,
+        {0x0435, 0x65} /* small letter ie */,
+        {0x0436, 0x60} /* small letter zhe */,
+        {0x0437, 0x7a} /* small letter ze */,
+        {0x0438, 0x69} /* small letter i */,
+        {0x043a, 0x6b} /* small letter ka */,
+        {0x043b, 0x6c} /* small letter el */,
+        {0x043c, 0x6d} /* small letter em */,
+        {0x043d, 0x6e} /* small letter en */,
+        {0x043e, 0x6f} /* small letter o */,
+        {0x043f, 0x70} /* small letter pe */,
+        {0x0440, 0x72} /* small letter er */,
+        {0x0441, 0x73} /* small letter es */,
+        {0x0442, 0x74} /* small letter te */,
+        {0x0443, 0x75} /* small letter u */,
+        {0x0444, 0x66} /* small letter ef */,
+        {0x0445, 0x68} /* small letter ha */,
+        {0x0446, 0x63} /* small letter tse */,
+        {0x0447, 0x7e} /* small letter che */,
+        {0x0448, 0x7b} /* small letter sha */,
+        {0x0453, 0x7c} /* small letter gje (macedonian) */,
+        {0x0455, 0x79} /* small letter dze (macedonian) */,
+        {0x0458, 0x6a} /* small letter je */,
+        {0x0459, 0x71} /* small letter lje */,
+        {0x045a, 0x77} /* small letter nje */,
+        {0x045c, 0x7d} /* small letter kje (macedonian) */,
+        {0x045f, 0x78} /* small letter dzhe */
+};
+
+/*
+#define cet_ucs4_to_jus_i_b1_003_mac_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_jus_i_b1_003_mac_extra[cet_ucs4_to_jus_i_b1_003_mac_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_jus_i_b1_003_mac =     /* defined in cet.h */
+{      
+       cet_cs_name_jus_i_b1_003_mac,           /* name of character set        */
+       cet_cs_alias_jus_i_b1_003_mac,          /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_jus_i_b1_003_mac,          /* char to UCS-4 value table    */
+       cet_ucs4_ofs_jus_i_b1_003_mac,          /* first non standard character */
+       cet_ucs4_cnt_jus_i_b1_003_mac,          /* number of values in table    */
+
+       cet_ucs4_to_jus_i_b1_003_mac_links,     /* UCS-4 to char links          */
+       cet_ucs4_to_jus_i_b1_003_mac_ct,                /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int jus_i_b1_003_mac_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0416, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0408, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+       0x041f, 0x0409, 0x0420, 0x0421, 0x0422, 0x0423, 0x0412, 0x040a, 
+       0x040f, 0x0405, 0x0417, 0x0428, 0x0403, 0x040c, 0x0427, 0x005f, 
+       0x0436, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0458, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x0459, 0x0440, 0x0441, 0x0442, 0x0443, 0x0432, 0x045a, 
+       0x045f, 0x0455, 0x0437, 0x0448, 0x0453, 0x045c, 0x0447, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/jus_i_b1_003_serb.h b/gpsbabel/cet/jus_i_b1_003_serb.h
new file mode 100644 (file)
index 0000000..10b81f1
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "JUS_I.B1.003-serb" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef jus_i_b1_003_serb_h
+#define jus_i_b1_003_serb_h
+
+#define cet_cs_name_jus_i_b1_003_serb "JUS_I.B1.003-serb"
+
+const char *cet_cs_alias_jus_i_b1_003_serb[] = 
+{
+       "JUS_I.B1.003-serb", "iso-ir-146", "serbian", NULL
+};
+
+#define cet_ucs4_ofs_jus_i_b1_003_serb 64
+#define cet_ucs4_cnt_jus_i_b1_003_serb 64
+
+const int cet_ucs4_map_jus_i_b1_003_serb[cet_ucs4_cnt_jus_i_b1_003_serb] =
+{
+       0x0416, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0408, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+       0x041f, 0x0409, 0x0420, 0x0421, 0x0422, 0x0423, 0x0412, 0x040a, 
+       0x040f, 0x0405, 0x0417, 0x0428, 0x0402, 0x040b, 0x0427, 0x005f, 
+       0x0436, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0458, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x0459, 0x0440, 0x0441, 0x0442, 0x0443, 0x0432, 0x045a, 
+       0x045f, 0x0455, 0x0437, 0x0448, 0x0452, 0x045b, 0x0447, 0x007f
+};
+
+#define cet_ucs4_to_jus_i_b1_003_serb_ct 62
+
+const cet_ucs4_link_t cet_ucs4_to_jus_i_b1_003_serb_links[cet_ucs4_to_jus_i_b1_003_serb_ct] =
+{
+        {0x0402, 0x5c} /* capital letter dje (serbocroatian) */,
+        {0x0405, 0x59} /* capital letter dze (macedonian) */,
+        {0x0408, 0x4a} /* capital letter je */,
+        {0x0409, 0x51} /* capital letter lje */,
+        {0x040a, 0x57} /* capital letter nje */,
+        {0x040b, 0x5d} /* capital letter tshe (serbocroatian) */,
+        {0x040f, 0x58} /* capital letter dzhe */,
+        {0x0410, 0x41} /* capital letter a */,
+        {0x0411, 0x42} /* capital letter be */,
+        {0x0412, 0x56} /* capital letter ve */,
+        {0x0413, 0x47} /* capital letter ghe */,
+        {0x0414, 0x44} /* capital letter de */,
+        {0x0415, 0x45} /* capital letter ie */,
+        {0x0416, 0x40} /* capital letter zhe */,
+        {0x0417, 0x5a} /* capital letter ze */,
+        {0x0418, 0x49} /* capital letter i */,
+        {0x041a, 0x4b} /* capital letter ka */,
+        {0x041b, 0x4c} /* capital letter el */,
+        {0x041c, 0x4d} /* capital letter em */,
+        {0x041d, 0x4e} /* capital letter en */,
+        {0x041e, 0x4f} /* capital letter o */,
+        {0x041f, 0x50} /* capital letter pe */,
+        {0x0420, 0x52} /* capital letter er */,
+        {0x0421, 0x53} /* capital letter es */,
+        {0x0422, 0x54} /* capital letter te */,
+        {0x0423, 0x55} /* capital letter u */,
+        {0x0424, 0x46} /* capital letter ef */,
+        {0x0425, 0x48} /* capital letter ha */,
+        {0x0426, 0x43} /* capital letter tse */,
+        {0x0427, 0x5e} /* capital letter che */,
+        {0x0428, 0x5b} /* capital letter sha */,
+        {0x0430, 0x61} /* small letter a */,
+        {0x0431, 0x62} /* small letter be */,
+        {0x0432, 0x76} /* small letter ve */,
+        {0x0433, 0x67} /* small letter ghe */,
+        {0x0434, 0x64} /* small letter de */,
+        {0x0435, 0x65} /* small letter ie */,
+        {0x0436, 0x60} /* small letter zhe */,
+        {0x0437, 0x7a} /* small letter ze */,
+        {0x0438, 0x69} /* small letter i */,
+        {0x043a, 0x6b} /* small letter ka */,
+        {0x043b, 0x6c} /* small letter el */,
+        {0x043c, 0x6d} /* small letter em */,
+        {0x043d, 0x6e} /* small letter en */,
+        {0x043e, 0x6f} /* small letter o */,
+        {0x043f, 0x70} /* small letter pe */,
+        {0x0440, 0x72} /* small letter er */,
+        {0x0441, 0x73} /* small letter es */,
+        {0x0442, 0x74} /* small letter te */,
+        {0x0443, 0x75} /* small letter u */,
+        {0x0444, 0x66} /* small letter ef */,
+        {0x0445, 0x68} /* small letter ha */,
+        {0x0446, 0x63} /* small letter tse */,
+        {0x0447, 0x7e} /* small letter che */,
+        {0x0448, 0x7b} /* small letter sha */,
+        {0x0452, 0x7c} /* small letter dje (serbocroatian) */,
+        {0x0455, 0x79} /* small letter dze (macedonian) */,
+        {0x0458, 0x6a} /* small letter je */,
+        {0x0459, 0x71} /* small letter lje */,
+        {0x045a, 0x77} /* small letter nje */,
+        {0x045b, 0x7d} /* small letter tshe (serbocroatian) */,
+        {0x045f, 0x78} /* small letter dzhe */
+};
+
+/*
+#define cet_ucs4_to_jus_i_b1_003_serb_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_jus_i_b1_003_serb_extra[cet_ucs4_to_jus_i_b1_003_serb_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_jus_i_b1_003_serb =    /* defined in cet.h */
+{      
+       cet_cs_name_jus_i_b1_003_serb,          /* name of character set        */
+       cet_cs_alias_jus_i_b1_003_serb,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_jus_i_b1_003_serb,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_jus_i_b1_003_serb,         /* first non standard character */
+       cet_ucs4_cnt_jus_i_b1_003_serb,         /* number of values in table    */
+
+       cet_ucs4_to_jus_i_b1_003_serb_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_jus_i_b1_003_serb_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int jus_i_b1_003_serb_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0416, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0408, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+       0x041f, 0x0409, 0x0420, 0x0421, 0x0422, 0x0423, 0x0412, 0x040a, 
+       0x040f, 0x0405, 0x0417, 0x0428, 0x0402, 0x040b, 0x0427, 0x005f, 
+       0x0436, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0458, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x0459, 0x0440, 0x0441, 0x0442, 0x0443, 0x0432, 0x045a, 
+       0x045f, 0x0455, 0x0437, 0x0448, 0x0452, 0x045b, 0x0447, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/keybcs2.h b/gpsbabel/cet/keybcs2.h
new file mode 100644 (file)
index 0000000..29b0cbb
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "KEYBCS2" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef keybcs2_h
+#define keybcs2_h
+
+#define cet_cs_name_keybcs2 "KEYBCS2"
+
+const char *cet_cs_alias_keybcs2[] = 
+{
+       "KEYBCS2", "Kamenicky", NULL
+};
+
+#define cet_ucs4_ofs_keybcs2 128
+#define cet_ucs4_cnt_keybcs2 128
+
+const int cet_ucs4_map_keybcs2[cet_ucs4_cnt_keybcs2] =
+{
+       0x010c, 0x00fc, 0x00e9, 0x010f, 0x00e4, 0x010e, 0x0164, 0x010d, 
+       0x011b, 0x011a, 0x0139, 0x00cd, 0x013e, 0x013a, 0x00c4, 0x00c1, 
+       0x00c9, 0x017e, 0x017d, 0x00f4, 0x00f6, 0x00d3, 0x016f, 0x00da, 
+       0x00fd, 0x00d6, 0x00dc, 0x0160, 0x013d, 0x00dd, 0x0158, 0x0165, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x0148, 0x0147, 0x016e, 0x00d4, 
+       0x0161, 0x0159, 0x0155, 0x0154, 0x00bc, 0x00a7, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x03b2, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x03bc, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x2205, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x2218, 0x00b7, 0x2219, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+
+#define cet_ucs4_to_keybcs2_ct 128
+
+const cet_ucs4_link_t cet_ucs4_to_keybcs2_links[cet_ucs4_to_keybcs2_ct] =
+{
+        {0x00a0, 0xff} /* space */,
+        {0x00a7, 0xad} /* sign */,
+        {0x00ab, 0xae} /* double angle quotation mark */,
+        {0x00b1, 0xf1} /* sign */,
+        {0x00b2, 0xfd} /* two */,
+        {0x00b7, 0xf9} /* dot */,
+        {0x00bb, 0xaf} /* double angle quotation mark */,
+        {0x00bc, 0xac} /* fraction one quarter */,
+        {0x00c1, 0x8f} /* capital letter a with acute */,
+        {0x00c4, 0x8e} /* capital letter a with diaeresis */,
+        {0x00c9, 0x90} /* capital letter e with acute */,
+        {0x00cd, 0x8b} /* capital letter i with acute */,
+        {0x00d3, 0x95} /* capital letter o with acute */,
+        {0x00d4, 0xa7} /* capital letter o with circumflex */,
+        {0x00d6, 0x99} /* capital letter o with diaeresis */,
+        {0x00da, 0x97} /* capital letter u with acute */,
+        {0x00dc, 0x9a} /* capital letter u with diaeresis */,
+        {0x00dd, 0x9d} /* capital letter y with acute */,
+        {0x00e1, 0xa0} /* small letter a with acute */,
+        {0x00e4, 0x84} /* small letter a with diaeresis */,
+        {0x00e9, 0x82} /* small letter e with acute */,
+        {0x00ed, 0xa1} /* small letter i with acute */,
+        {0x00f3, 0xa2} /* small letter o with acute */,
+        {0x00f4, 0x93} /* small letter o with circumflex */,
+        {0x00f6, 0x94} /* small letter o with diaeresis */,
+        {0x00f7, 0xf6} /* sign */,
+        {0x00fa, 0xa3} /* small letter u with acute */,
+        {0x00fc, 0x81} /* small letter u with diaeresis */,
+        {0x00fd, 0x98} /* small letter y with acute */,
+        {0x010c, 0x80} /* capital letter c with caron */,
+        {0x010d, 0x87} /* small letter c with caron */,
+        {0x010e, 0x85} /* capital letter d with caron */,
+        {0x010f, 0x83} /* small letter d with caron */,
+        {0x011a, 0x89} /* capital letter e with caron */,
+        {0x011b, 0x88} /* small letter e with caron */,
+        {0x0139, 0x8a} /* capital letter l with acute */,
+        {0x013a, 0x8d} /* small letter l with acute */,
+        {0x013d, 0x9c} /* capital letter l with caron */,
+        {0x013e, 0x8c} /* small letter l with caron */,
+        {0x0147, 0xa5} /* capital letter n with caron */,
+        {0x0148, 0xa4} /* small letter n with caron */,
+        {0x0154, 0xab} /* capital letter r with acute */,
+        {0x0155, 0xaa} /* small letter r with acute */,
+        {0x0158, 0x9e} /* capital letter r with caron */,
+        {0x0159, 0xa9} /* small letter r with caron */,
+        {0x0160, 0x9b} /* capital letter s with caron */,
+        {0x0161, 0xa8} /* small letter s with caron */,
+        {0x0164, 0x86} /* capital letter t with caron */,
+        {0x0165, 0x9f} /* small letter t with caron */,
+        {0x016e, 0xa6} /* capital letter u with ring above */,
+        {0x016f, 0x96} /* small letter u with ring above */,
+        {0x017d, 0x92} /* capital letter z with caron */,
+        {0x017e, 0x91} /* small letter z with caron */,
+        {0x0393, 0xe2} /* capital letter gamma */,
+        {0x0398, 0xe9} /* capital letter theta */,
+        {0x03a3, 0xe4} /* capital letter sigma */,
+        {0x03a6, 0xe8} /* capital letter phi */,
+        {0x03a9, 0xea} /* capital letter omega */,
+        {0x03b1, 0xe0} /* small letter alpha */,
+        {0x03b2, 0xe1} /* small letter beta */,
+        {0x03b4, 0xeb} /* small letter delta */,
+        {0x03b5, 0xee} /* small letter epsilon */,
+        {0x03bc, 0xe6} /* small letter mu */,
+        {0x03c0, 0xe3} /* small letter pi */,
+        {0x03c3, 0xe5} /* small letter sigma */,
+        {0x03c4, 0xe7} /* small letter tau */,
+        {0x207f, 0xfc} /* latin small letter n */,
+        {0x2205, 0xed} /* set */,
+        {0x2218, 0xf8} /* operator */,
+        {0x2219, 0xfa} /* operator */,
+        {0x221a, 0xfb} /* root */,
+        {0x221e, 0xec} /* infinity */,
+        {0x2229, 0xef} /* intersection */,
+        {0x2248, 0xf7} /* equal to */,
+        {0x2261, 0xf0} /* to */,
+        {0x2264, 0xf3} /* or equal to */,
+        {0x2265, 0xf2} /* or equal to */,
+        {0x2320, 0xf4} /* half integral */,
+        {0x2321, 0xf5} /* half integral */,
+        {0x2500, 0xc4} /* drawings light horizontal */,
+        {0x2502, 0xb3} /* drawings light vertical */,
+        {0x250c, 0xda} /* drawings light down and right */,
+        {0x2510, 0xbf} /* drawings light down and left */,
+        {0x2514, 0xc0} /* drawings light up and right */,
+        {0x2518, 0xd9} /* drawings light up and left */,
+        {0x251c, 0xc3} /* drawings light vertical and right */,
+        {0x2524, 0xb4} /* drawings light vertical and left */,
+        {0x252c, 0xc2} /* drawings light down and horizontal */,
+        {0x2534, 0xc1} /* drawings light up and horizontal */,
+        {0x253c, 0xc5} /* drawings light vertical and horizontal */,
+        {0x2550, 0xcd} /* drawings heavy horizontal */,
+        {0x2551, 0xba} /* drawings heavy vertical */,
+        {0x2552, 0xd5} /* drawings down light and right heavy */,
+        {0x2553, 0xd6} /* drawings down heavy and right light */,
+        {0x2554, 0xc9} /* drawings heavy down and right */,
+        {0x2555, 0xb8} /* drawings down light and left heavy */,
+        {0x2556, 0xb7} /* drawings down heavy and left light */,
+        {0x2557, 0xbb} /* drawings heavy down and left */,
+        {0x2558, 0xd4} /* drawings up light and right heavy */,
+        {0x2559, 0xd3} /* drawings up heavy and right light */,
+        {0x255a, 0xc8} /* drawings heavy up and right */,
+        {0x255b, 0xbe} /* drawings up light and left heavy */,
+        {0x255c, 0xbd} /* drawings up heavy and left light */,
+        {0x255d, 0xbc} /* drawings heavy up and left */,
+        {0x255e, 0xc6} /* drawings vertical light and right heavy */,
+        {0x255f, 0xc7} /* drawings vertical heavy and right light */,
+        {0x2560, 0xcc} /* drawings heavy vertical and right */,
+        {0x2561, 0xb5} /* drawings vertical light and left heavy */,
+        {0x2562, 0xb6} /* drawings vertical heavy and left light */,
+        {0x2563, 0xb9} /* drawings heavy vertical and left */,
+        {0x2564, 0xd1} /* drawings down light and horizontal heavy */,
+        {0x2565, 0xd2} /* drawings down heavy and horizontal light */,
+        {0x2566, 0xcb} /* drawings heavy down and horizontal */,
+        {0x2567, 0xcf} /* drawings up light and horizontal heavy */,
+        {0x2568, 0xd0} /* drawings up heavy and horizontal light */,
+        {0x2569, 0xca} /* drawings heavy up and horizontal */,
+        {0x256a, 0xd8} /* drawings vertical light and horizontal heavy */,
+        {0x256b, 0xd7} /* drawings vertical heavy and horizontal light */,
+        {0x256c, 0xce} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0xdf} /* half block */,
+        {0x2584, 0xdc} /* half block */,
+        {0x2588, 0xdb} /* block */,
+        {0x258c, 0xdd} /* half block */,
+        {0x2590, 0xde} /* half block */,
+        {0x2591, 0xb0} /* shade */,
+        {0x2592, 0xb1} /* shade */,
+        {0x2593, 0xb2} /* shade */,
+        {0x25a0, 0xfe} /* square */
+};
+
+/*
+#define cet_ucs4_to_keybcs2_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_keybcs2_extra[cet_ucs4_to_keybcs2_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_keybcs2 =      /* defined in cet.h */
+{      
+       cet_cs_name_keybcs2,            /* name of character set        */
+       cet_cs_alias_keybcs2,           /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_keybcs2,           /* char to UCS-4 value table    */
+       cet_ucs4_ofs_keybcs2,           /* first non standard character */
+       cet_ucs4_cnt_keybcs2,           /* number of values in table    */
+
+       cet_ucs4_to_keybcs2_links,      /* UCS-4 to char links          */
+       cet_ucs4_to_keybcs2_ct,         /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int keybcs2_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x010c, 0x00fc, 0x00e9, 0x010f, 0x00e4, 0x010e, 0x0164, 0x010d, 
+       0x011b, 0x011a, 0x0139, 0x00cd, 0x013e, 0x013a, 0x00c4, 0x00c1, 
+       0x00c9, 0x017e, 0x017d, 0x00f4, 0x00f6, 0x00d3, 0x016f, 0x00da, 
+       0x00fd, 0x00d6, 0x00dc, 0x0160, 0x013d, 0x00dd, 0x0158, 0x0165, 
+       0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x0148, 0x0147, 0x016e, 0x00d4, 
+       0x0161, 0x0159, 0x0155, 0x0154, 0x00bc, 0x00a7, 0x00ab, 0x00bb, 
+       0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 
+       0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 
+       0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 
+       0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 
+       0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 
+       0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 
+       0x03b1, 0x03b2, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x03bc, 0x03c4, 
+       0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x2205, 0x03b5, 0x2229, 
+       0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 
+       0x2218, 0x00b7, 0x2219, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/koi8_r.h b/gpsbabel/cet/koi8_r.h
new file mode 100644 (file)
index 0000000..36f63e4
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "KOI8-R" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef koi8_r_h
+#define koi8_r_h
+
+#define cet_cs_name_koi8_r "KOI8-R"
+
+const char *cet_cs_alias_koi8_r[] = 
+{
+       "KOI8-R", "csKOI8R", NULL
+};
+
+#define cet_ucs4_ofs_koi8_r 128
+#define cet_ucs4_cnt_koi8_r 128
+
+const int cet_ucs4_map_koi8_r[cet_ucs4_cnt_koi8_r] =
+{
+       0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 
+       0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, 
+       0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2022, 0x221a, 0x2248, 
+       0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7, 
+       0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, 
+       0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 
+       0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, 
+       0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9, 
+       0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 
+       0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 
+       0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+       0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 
+       0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+};
+
+#define cet_ucs4_to_koi8_r_ct 128
+
+const cet_ucs4_link_t cet_ucs4_to_koi8_r_links[cet_ucs4_to_koi8_r_ct] =
+{
+        {0x00a0, 0x9a} /* space */,
+        {0x00a9, 0xbf} /* sign */,
+        {0x00b0, 0x9c} /* sign */,
+        {0x00b2, 0x9d} /* two */,
+        {0x00b7, 0x9e} /* dot */,
+        {0x00f7, 0x9f} /* sign */,
+        {0x0401, 0xb3} /* capital letter io */,
+        {0x0410, 0xe1} /* capital letter a */,
+        {0x0411, 0xe2} /* capital letter be */,
+        {0x0412, 0xf7} /* capital letter ve */,
+        {0x0413, 0xe7} /* capital letter ghe */,
+        {0x0414, 0xe4} /* capital letter de */,
+        {0x0415, 0xe5} /* capital letter ie */,
+        {0x0416, 0xf6} /* capital letter zhe */,
+        {0x0417, 0xfa} /* capital letter ze */,
+        {0x0418, 0xe9} /* capital letter i */,
+        {0x0419, 0xea} /* capital letter short i */,
+        {0x041a, 0xeb} /* capital letter ka */,
+        {0x041b, 0xec} /* capital letter el */,
+        {0x041c, 0xed} /* capital letter em */,
+        {0x041d, 0xee} /* capital letter en */,
+        {0x041e, 0xef} /* capital letter o */,
+        {0x041f, 0xf0} /* capital letter pe */,
+        {0x0420, 0xf2} /* capital letter er */,
+        {0x0421, 0xf3} /* capital letter es */,
+        {0x0422, 0xf4} /* capital letter te */,
+        {0x0423, 0xf5} /* capital letter u */,
+        {0x0424, 0xe6} /* capital letter ef */,
+        {0x0425, 0xe8} /* capital letter ha */,
+        {0x0426, 0xe3} /* capital letter tse */,
+        {0x0427, 0xfe} /* capital letter che */,
+        {0x0428, 0xfb} /* capital letter sha */,
+        {0x0429, 0xfd} /* capital letter shcha */,
+        {0x042a, 0xff} /* capital letter hard sign */,
+        {0x042b, 0xf9} /* capital letter yeru */,
+        {0x042c, 0xf8} /* capital letter soft sign */,
+        {0x042d, 0xfc} /* capital letter e */,
+        {0x042e, 0xe0} /* capital letter yu */,
+        {0x042f, 0xf1} /* capital letter ya */,
+        {0x0430, 0xc1} /* small letter a */,
+        {0x0431, 0xc2} /* small letter be */,
+        {0x0432, 0xd7} /* small letter ve */,
+        {0x0433, 0xc7} /* small letter ghe */,
+        {0x0434, 0xc4} /* small letter de */,
+        {0x0435, 0xc5} /* small letter ie */,
+        {0x0436, 0xd6} /* small letter zhe */,
+        {0x0437, 0xda} /* small letter ze */,
+        {0x0438, 0xc9} /* small letter i */,
+        {0x0439, 0xca} /* small letter short i */,
+        {0x043a, 0xcb} /* small letter ka */,
+        {0x043b, 0xcc} /* small letter el */,
+        {0x043c, 0xcd} /* small letter em */,
+        {0x043d, 0xce} /* small letter en */,
+        {0x043e, 0xcf} /* small letter o */,
+        {0x043f, 0xd0} /* small letter pe */,
+        {0x0440, 0xd2} /* small letter er */,
+        {0x0441, 0xd3} /* small letter es */,
+        {0x0442, 0xd4} /* small letter te */,
+        {0x0443, 0xd5} /* small letter u */,
+        {0x0444, 0xc6} /* small letter ef */,
+        {0x0445, 0xc8} /* small letter ha */,
+        {0x0446, 0xc3} /* small letter tse */,
+        {0x0447, 0xde} /* small letter che */,
+        {0x0448, 0xdb} /* small letter sha */,
+        {0x0449, 0xdd} /* small letter shcha */,
+        {0x044a, 0xdf} /* small letter hard sign */,
+        {0x044b, 0xd9} /* small letter yeru */,
+        {0x044c, 0xd8} /* small letter soft sign */,
+        {0x044d, 0xdc} /* small letter e */,
+        {0x044e, 0xc0} /* small letter yu */,
+        {0x044f, 0xd1} /* small letter ya */,
+        {0x0451, 0xa3} /* small letter io */,
+        {0x2022, 0x95} /* puce */,
+        {0x221a, 0x96} /* root */,
+        {0x2248, 0x97} /* equal to */,
+        {0x2264, 0x98} /* or equal to */,
+        {0x2265, 0x99} /* or equal to */,
+        {0x2320, 0x93} /* half integral */,
+        {0x2321, 0x9b} /* half integral */,
+        {0x2500, 0x80} /* drawings light horizontal */,
+        {0x2502, 0x81} /* drawings light vertical */,
+        {0x250c, 0x82} /* drawings light down and right */,
+        {0x2510, 0x83} /* drawings light down and left */,
+        {0x2514, 0x84} /* drawings light up and right */,
+        {0x2518, 0x85} /* drawings light up and left */,
+        {0x251c, 0x86} /* drawings light vertical and right */,
+        {0x2524, 0x87} /* drawings light vertical and left */,
+        {0x252c, 0x88} /* drawings light down and horizontal */,
+        {0x2534, 0x89} /* drawings light up and horizontal */,
+        {0x253c, 0x8a} /* drawings light vertical and horizontal */,
+        {0x2550, 0xa0} /* drawings heavy horizontal */,
+        {0x2551, 0xa1} /* drawings heavy vertical */,
+        {0x2552, 0xa2} /* drawings down light and right heavy */,
+        {0x2553, 0xa4} /* drawings down heavy and right light */,
+        {0x2554, 0xa5} /* drawings heavy down and right */,
+        {0x2555, 0xa6} /* drawings down light and left heavy */,
+        {0x2556, 0xa7} /* drawings down heavy and left light */,
+        {0x2557, 0xa8} /* drawings heavy down and left */,
+        {0x2558, 0xa9} /* drawings up light and right heavy */,
+        {0x2559, 0xaa} /* drawings up heavy and right light */,
+        {0x255a, 0xab} /* drawings heavy up and right */,
+        {0x255b, 0xac} /* drawings up light and left heavy */,
+        {0x255c, 0xad} /* drawings up heavy and left light */,
+        {0x255d, 0xae} /* drawings heavy up and left */,
+        {0x255e, 0xaf} /* drawings vertical light and right heavy */,
+        {0x255f, 0xb0} /* drawings vertical heavy and right light */,
+        {0x2560, 0xb1} /* drawings heavy vertical and right */,
+        {0x2561, 0xb2} /* drawings vertical light and left heavy */,
+        {0x2562, 0xb4} /* drawings vertical heavy and left light */,
+        {0x2563, 0xb5} /* drawings heavy vertical and left */,
+        {0x2564, 0xb6} /* drawings down light and horizontal heavy */,
+        {0x2565, 0xb7} /* drawings down heavy and horizontal light */,
+        {0x2566, 0xb8} /* drawings heavy down and horizontal */,
+        {0x2567, 0xb9} /* drawings up light and horizontal heavy */,
+        {0x2568, 0xba} /* drawings up heavy and horizontal light */,
+        {0x2569, 0xbb} /* drawings heavy up and horizontal */,
+        {0x256a, 0xbc} /* drawings vertical light and horizontal heavy */,
+        {0x256b, 0xbd} /* drawings vertical heavy and horizontal light */,
+        {0x256c, 0xbe} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0x8b} /* half block */,
+        {0x2584, 0x8c} /* half block */,
+        {0x2588, 0x8d} /* block */,
+        {0x258c, 0x8e} /* half block */,
+        {0x2590, 0x8f} /* half block */,
+        {0x2591, 0x90} /* shade */,
+        {0x2592, 0x91} /* shade */,
+        {0x2593, 0x92} /* shade */,
+        {0x25a0, 0x94} /* square */
+};
+
+/*
+#define cet_ucs4_to_koi8_r_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_koi8_r_extra[cet_ucs4_to_koi8_r_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_koi8_r =       /* defined in cet.h */
+{      
+       cet_cs_name_koi8_r,             /* name of character set        */
+       cet_cs_alias_koi8_r,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_koi8_r,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_koi8_r,            /* first non standard character */
+       cet_ucs4_cnt_koi8_r,            /* number of values in table    */
+
+       cet_ucs4_to_koi8_r_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_koi8_r_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int koi8_r_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 
+       0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, 
+       0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2022, 0x221a, 0x2248, 
+       0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7, 
+       0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, 
+       0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 
+       0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, 
+       0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9, 
+       0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 
+       0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 
+       0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+       0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 
+       0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/koi8_ru.h b/gpsbabel/cet/koi8_ru.h
new file mode 100644 (file)
index 0000000..7800847
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "KOI8-RU" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef koi8_ru_h
+#define koi8_ru_h
+
+#define cet_cs_name_koi8_ru "KOI8-RU"
+
+const char *cet_cs_alias_koi8_ru[] = 
+{
+       "KOI8-RU", NULL
+};
+
+#define cet_ucs4_ofs_koi8_ru 128
+#define cet_ucs4_cnt_koi8_ru 128
+
+const int cet_ucs4_map_koi8_ru[cet_ucs4_cnt_koi8_ru] =
+{
+       0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 
+       0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, 
+       0x2591, 0x2592, 0x2593, 0x201c, 0x25a0, 0x2022, 0x201d, 0x2014, 
+       0x2116, 0x2122, 0x00a0, 0x00bb, 0x00ae, 0x00ab, 0x00b7, 0x00a4, 
+       0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, 
+       0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x045e, 0x255e, 
+       0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, 
+       0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x040e, 0x00a9, 
+       0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 
+       0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 
+       0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+       0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 
+       0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+};
+
+#define cet_ucs4_to_koi8_ru_ct 128
+
+const cet_ucs4_link_t cet_ucs4_to_koi8_ru_links[cet_ucs4_to_koi8_ru_ct] =
+{
+        {0x00a0, 0x9a} /* space */,
+        {0x00a4, 0x9f} /* sign */,
+        {0x00a9, 0xbf} /* sign */,
+        {0x00ab, 0x9d} /* double angle quotation mark */,
+        {0x00ae, 0x9c} /* sign */,
+        {0x00b7, 0x9e} /* dot */,
+        {0x00bb, 0x9b} /* double angle quotation mark */,
+        {0x0401, 0xb3} /* capital letter io */,
+        {0x0404, 0xb4} /* capital letter ukrainian ie */,
+        {0x0406, 0xb6} /* capital letter byelorussian-ukrainian i */,
+        {0x0407, 0xb7} /* capital letter yi (ukrainian) */,
+        {0x040e, 0xbe} /* capital letter short u (byelorussian) */,
+        {0x0410, 0xe1} /* capital letter a */,
+        {0x0411, 0xe2} /* capital letter be */,
+        {0x0412, 0xf7} /* capital letter ve */,
+        {0x0413, 0xe7} /* capital letter ghe */,
+        {0x0414, 0xe4} /* capital letter de */,
+        {0x0415, 0xe5} /* capital letter ie */,
+        {0x0416, 0xf6} /* capital letter zhe */,
+        {0x0417, 0xfa} /* capital letter ze */,
+        {0x0418, 0xe9} /* capital letter i */,
+        {0x0419, 0xea} /* capital letter short i */,
+        {0x041a, 0xeb} /* capital letter ka */,
+        {0x041b, 0xec} /* capital letter el */,
+        {0x041c, 0xed} /* capital letter em */,
+        {0x041d, 0xee} /* capital letter en */,
+        {0x041e, 0xef} /* capital letter o */,
+        {0x041f, 0xf0} /* capital letter pe */,
+        {0x0420, 0xf2} /* capital letter er */,
+        {0x0421, 0xf3} /* capital letter es */,
+        {0x0422, 0xf4} /* capital letter te */,
+        {0x0423, 0xf5} /* capital letter u */,
+        {0x0424, 0xe6} /* capital letter ef */,
+        {0x0425, 0xe8} /* capital letter ha */,
+        {0x0426, 0xe3} /* capital letter tse */,
+        {0x0427, 0xfe} /* capital letter che */,
+        {0x0428, 0xfb} /* capital letter sha */,
+        {0x0429, 0xfd} /* capital letter shcha */,
+        {0x042a, 0xff} /* capital letter hard sign */,
+        {0x042b, 0xf9} /* capital letter yeru */,
+        {0x042c, 0xf8} /* capital letter soft sign */,
+        {0x042d, 0xfc} /* capital letter e */,
+        {0x042e, 0xe0} /* capital letter yu */,
+        {0x042f, 0xf1} /* capital letter ya */,
+        {0x0430, 0xc1} /* small letter a */,
+        {0x0431, 0xc2} /* small letter be */,
+        {0x0432, 0xd7} /* small letter ve */,
+        {0x0433, 0xc7} /* small letter ghe */,
+        {0x0434, 0xc4} /* small letter de */,
+        {0x0435, 0xc5} /* small letter ie */,
+        {0x0436, 0xd6} /* small letter zhe */,
+        {0x0437, 0xda} /* small letter ze */,
+        {0x0438, 0xc9} /* small letter i */,
+        {0x0439, 0xca} /* small letter short i */,
+        {0x043a, 0xcb} /* small letter ka */,
+        {0x043b, 0xcc} /* small letter el */,
+        {0x043c, 0xcd} /* small letter em */,
+        {0x043d, 0xce} /* small letter en */,
+        {0x043e, 0xcf} /* small letter o */,
+        {0x043f, 0xd0} /* small letter pe */,
+        {0x0440, 0xd2} /* small letter er */,
+        {0x0441, 0xd3} /* small letter es */,
+        {0x0442, 0xd4} /* small letter te */,
+        {0x0443, 0xd5} /* small letter u */,
+        {0x0444, 0xc6} /* small letter ef */,
+        {0x0445, 0xc8} /* small letter ha */,
+        {0x0446, 0xc3} /* small letter tse */,
+        {0x0447, 0xde} /* small letter che */,
+        {0x0448, 0xdb} /* small letter sha */,
+        {0x0449, 0xdd} /* small letter shcha */,
+        {0x044a, 0xdf} /* small letter hard sign */,
+        {0x044b, 0xd9} /* small letter yeru */,
+        {0x044c, 0xd8} /* small letter soft sign */,
+        {0x044d, 0xdc} /* small letter e */,
+        {0x044e, 0xc0} /* small letter yu */,
+        {0x044f, 0xd1} /* small letter ya */,
+        {0x0451, 0xa3} /* small letter io */,
+        {0x0454, 0xa4} /* small letter ukrainian ie */,
+        {0x0456, 0xa6} /* small letter byelorussian-ukrainian i */,
+        {0x0457, 0xa7} /* small letter yi (ukrainian) */,
+        {0x045e, 0xae} /* small letter short u (byelorussian) */,
+        {0x0490, 0xbd} /* capital letter ghe with upturn */,
+        {0x0491, 0xad} /* small letter ghe with upturn */,
+        {0x2014, 0x97} /* dash */,
+        {0x201c, 0x93} /* double quotation mark */,
+        {0x201d, 0x96} /* double quotation mark */,
+        {0x2022, 0x95} /* puce */,
+        {0x2116, 0x98} /* sign */,
+        {0x2122, 0x99} /* mark sign */,
+        {0x2500, 0x80} /* drawings light horizontal */,
+        {0x2502, 0x81} /* drawings light vertical */,
+        {0x250c, 0x82} /* drawings light down and right */,
+        {0x2510, 0x83} /* drawings light down and left */,
+        {0x2514, 0x84} /* drawings light up and right */,
+        {0x2518, 0x85} /* drawings light up and left */,
+        {0x251c, 0x86} /* drawings light vertical and right */,
+        {0x2524, 0x87} /* drawings light vertical and left */,
+        {0x252c, 0x88} /* drawings light down and horizontal */,
+        {0x2534, 0x89} /* drawings light up and horizontal */,
+        {0x253c, 0x8a} /* drawings light vertical and horizontal */,
+        {0x2550, 0xa0} /* drawings heavy horizontal */,
+        {0x2551, 0xa1} /* drawings heavy vertical */,
+        {0x2552, 0xa2} /* drawings down light and right heavy */,
+        {0x2554, 0xa5} /* drawings heavy down and right */,
+        {0x2557, 0xa8} /* drawings heavy down and left */,
+        {0x2558, 0xa9} /* drawings up light and right heavy */,
+        {0x2559, 0xaa} /* drawings up heavy and right light */,
+        {0x255a, 0xab} /* drawings heavy up and right */,
+        {0x255b, 0xac} /* drawings up light and left heavy */,
+        {0x255e, 0xaf} /* drawings vertical light and right heavy */,
+        {0x255f, 0xb0} /* drawings vertical heavy and right light */,
+        {0x2560, 0xb1} /* drawings heavy vertical and right */,
+        {0x2561, 0xb2} /* drawings vertical light and left heavy */,
+        {0x2563, 0xb5} /* drawings heavy vertical and left */,
+        {0x2566, 0xb8} /* drawings heavy down and horizontal */,
+        {0x2567, 0xb9} /* drawings up light and horizontal heavy */,
+        {0x2568, 0xba} /* drawings up heavy and horizontal light */,
+        {0x2569, 0xbb} /* drawings heavy up and horizontal */,
+        {0x256a, 0xbc} /* drawings vertical light and horizontal heavy */,
+        {0x2580, 0x8b} /* half block */,
+        {0x2584, 0x8c} /* half block */,
+        {0x2588, 0x8d} /* block */,
+        {0x258c, 0x8e} /* half block */,
+        {0x2590, 0x8f} /* half block */,
+        {0x2591, 0x90} /* shade */,
+        {0x2592, 0x91} /* shade */,
+        {0x2593, 0x92} /* shade */,
+        {0x25a0, 0x94} /* square */
+};
+
+/*
+#define cet_ucs4_to_koi8_ru_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_koi8_ru_extra[cet_ucs4_to_koi8_ru_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_koi8_ru =      /* defined in cet.h */
+{      
+       cet_cs_name_koi8_ru,            /* name of character set        */
+       cet_cs_alias_koi8_ru,           /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_koi8_ru,           /* char to UCS-4 value table    */
+       cet_ucs4_ofs_koi8_ru,           /* first non standard character */
+       cet_ucs4_cnt_koi8_ru,           /* number of values in table    */
+
+       cet_ucs4_to_koi8_ru_links,      /* UCS-4 to char links          */
+       cet_ucs4_to_koi8_ru_ct,         /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int koi8_ru_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 
+       0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, 
+       0x2591, 0x2592, 0x2593, 0x201c, 0x25a0, 0x2022, 0x201d, 0x2014, 
+       0x2116, 0x2122, 0x00a0, 0x00bb, 0x00ae, 0x00ab, 0x00b7, 0x00a4, 
+       0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, 
+       0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x045e, 0x255e, 
+       0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, 
+       0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x040e, 0x00a9, 
+       0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 
+       0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 
+       0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+       0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 
+       0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/koi8_u.h b/gpsbabel/cet/koi8_u.h
new file mode 100644 (file)
index 0000000..1f3d88c
--- /dev/null
@@ -0,0 +1,238 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "KOI8-U" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef koi8_u_h
+#define koi8_u_h
+
+#define cet_cs_name_koi8_u "KOI8-U"
+
+const char *cet_cs_alias_koi8_u[] = 
+{
+       "KOI8-U", NULL
+};
+
+#define cet_ucs4_ofs_koi8_u 128
+#define cet_ucs4_cnt_koi8_u 112
+
+const int cet_ucs4_map_koi8_u[cet_ucs4_cnt_koi8_u] =
+{
+       0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 
+       0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, 
+       0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248, 
+       0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7, 
+       0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, 
+       0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x255d, 0x255e, 
+       0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, 
+       0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x256c, 0x00a9, 
+       0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 
+       0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 
+       0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e
+};
+
+#define cet_ucs4_to_koi8_u_ct 112
+
+const cet_ucs4_link_t cet_ucs4_to_koi8_u_links[cet_ucs4_to_koi8_u_ct] =
+{
+        {0x00a0, 0x9a} /* space */,
+        {0x00a9, 0xbf} /* sign */,
+        {0x00b0, 0x9c} /* sign */,
+        {0x00b2, 0x9d} /* two */,
+        {0x00b7, 0x9e} /* dot */,
+        {0x00f7, 0x9f} /* sign */,
+        {0x0401, 0xb3} /* capital letter io */,
+        {0x0404, 0xb4} /* capital letter ukrainian ie */,
+        {0x0406, 0xb6} /* capital letter byelorussian-ukrainian i */,
+        {0x0407, 0xb7} /* capital letter yi (ukrainian) */,
+        {0x0410, 0xe1} /* capital letter a */,
+        {0x0411, 0xe2} /* capital letter be */,
+        {0x0413, 0xe7} /* capital letter ghe */,
+        {0x0414, 0xe4} /* capital letter de */,
+        {0x0415, 0xe5} /* capital letter ie */,
+        {0x0418, 0xe9} /* capital letter i */,
+        {0x0419, 0xea} /* capital letter short i */,
+        {0x041a, 0xeb} /* capital letter ka */,
+        {0x041b, 0xec} /* capital letter el */,
+        {0x041c, 0xed} /* capital letter em */,
+        {0x041d, 0xee} /* capital letter en */,
+        {0x041e, 0xef} /* capital letter o */,
+        {0x0424, 0xe6} /* capital letter ef */,
+        {0x0425, 0xe8} /* capital letter ha */,
+        {0x0426, 0xe3} /* capital letter tse */,
+        {0x042e, 0xe0} /* capital letter yu */,
+        {0x0430, 0xc1} /* small letter a */,
+        {0x0431, 0xc2} /* small letter be */,
+        {0x0432, 0xd7} /* small letter ve */,
+        {0x0433, 0xc7} /* small letter ghe */,
+        {0x0434, 0xc4} /* small letter de */,
+        {0x0435, 0xc5} /* small letter ie */,
+        {0x0436, 0xd6} /* small letter zhe */,
+        {0x0437, 0xda} /* small letter ze */,
+        {0x0438, 0xc9} /* small letter i */,
+        {0x0439, 0xca} /* small letter short i */,
+        {0x043a, 0xcb} /* small letter ka */,
+        {0x043b, 0xcc} /* small letter el */,
+        {0x043c, 0xcd} /* small letter em */,
+        {0x043d, 0xce} /* small letter en */,
+        {0x043e, 0xcf} /* small letter o */,
+        {0x043f, 0xd0} /* small letter pe */,
+        {0x0440, 0xd2} /* small letter er */,
+        {0x0441, 0xd3} /* small letter es */,
+        {0x0442, 0xd4} /* small letter te */,
+        {0x0443, 0xd5} /* small letter u */,
+        {0x0444, 0xc6} /* small letter ef */,
+        {0x0445, 0xc8} /* small letter ha */,
+        {0x0446, 0xc3} /* small letter tse */,
+        {0x0447, 0xde} /* small letter che */,
+        {0x0448, 0xdb} /* small letter sha */,
+        {0x0449, 0xdd} /* small letter shcha */,
+        {0x044a, 0xdf} /* small letter hard sign */,
+        {0x044b, 0xd9} /* small letter yeru */,
+        {0x044c, 0xd8} /* small letter soft sign */,
+        {0x044d, 0xdc} /* small letter e */,
+        {0x044e, 0xc0} /* small letter yu */,
+        {0x044f, 0xd1} /* small letter ya */,
+        {0x0451, 0xa3} /* small letter io */,
+        {0x0454, 0xa4} /* small letter ukrainian ie */,
+        {0x0456, 0xa6} /* small letter byelorussian-ukrainian i */,
+        {0x0457, 0xa7} /* small letter yi (ukrainian) */,
+        {0x0490, 0xbd} /* capital letter ghe with upturn */,
+        {0x0491, 0xad} /* small letter ghe with upturn */,
+        {0x2219, 0x95} /* operator */,
+        {0x221a, 0x96} /* root */,
+        {0x2248, 0x97} /* equal to */,
+        {0x2264, 0x98} /* or equal to */,
+        {0x2265, 0x99} /* or equal to */,
+        {0x2320, 0x93} /* half integral */,
+        {0x2321, 0x9b} /* half integral */,
+        {0x2500, 0x80} /* drawings light horizontal */,
+        {0x2502, 0x81} /* drawings light vertical */,
+        {0x250c, 0x82} /* drawings light down and right */,
+        {0x2510, 0x83} /* drawings light down and left */,
+        {0x2514, 0x84} /* drawings light up and right */,
+        {0x2518, 0x85} /* drawings light up and left */,
+        {0x251c, 0x86} /* drawings light vertical and right */,
+        {0x2524, 0x87} /* drawings light vertical and left */,
+        {0x252c, 0x88} /* drawings light down and horizontal */,
+        {0x2534, 0x89} /* drawings light up and horizontal */,
+        {0x253c, 0x8a} /* drawings light vertical and horizontal */,
+        {0x2550, 0xa0} /* drawings heavy horizontal */,
+        {0x2551, 0xa1} /* drawings heavy vertical */,
+        {0x2552, 0xa2} /* drawings down light and right heavy */,
+        {0x2554, 0xa5} /* drawings heavy down and right */,
+        {0x2557, 0xa8} /* drawings heavy down and left */,
+        {0x2558, 0xa9} /* drawings up light and right heavy */,
+        {0x2559, 0xaa} /* drawings up heavy and right light */,
+        {0x255a, 0xab} /* drawings heavy up and right */,
+        {0x255b, 0xac} /* drawings up light and left heavy */,
+        {0x255d, 0xae} /* drawings heavy up and left */,
+        {0x255e, 0xaf} /* drawings vertical light and right heavy */,
+        {0x255f, 0xb0} /* drawings vertical heavy and right light */,
+        {0x2560, 0xb1} /* drawings heavy vertical and right */,
+        {0x2561, 0xb2} /* drawings vertical light and left heavy */,
+        {0x2563, 0xb5} /* drawings heavy vertical and left */,
+        {0x2566, 0xb8} /* drawings heavy down and horizontal */,
+        {0x2567, 0xb9} /* drawings up light and horizontal heavy */,
+        {0x2568, 0xba} /* drawings up heavy and horizontal light */,
+        {0x2569, 0xbb} /* drawings heavy up and horizontal */,
+        {0x256a, 0xbc} /* drawings vertical light and horizontal heavy */,
+        {0x256c, 0xbe} /* drawings heavy vertical and horizontal */,
+        {0x2580, 0x8b} /* half block */,
+        {0x2584, 0x8c} /* half block */,
+        {0x2588, 0x8d} /* block */,
+        {0x258c, 0x8e} /* half block */,
+        {0x2590, 0x8f} /* half block */,
+        {0x2591, 0x90} /* shade */,
+        {0x2592, 0x91} /* shade */,
+        {0x2593, 0x92} /* shade */,
+        {0x25a0, 0x94} /* square */
+};
+
+/*
+#define cet_ucs4_to_koi8_u_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_koi8_u_extra[cet_ucs4_to_koi8_u_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_koi8_u =       /* defined in cet.h */
+{      
+       cet_cs_name_koi8_u,             /* name of character set        */
+       cet_cs_alias_koi8_u,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_koi8_u,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_koi8_u,            /* first non standard character */
+       cet_ucs4_cnt_koi8_u,            /* number of values in table    */
+
+       cet_ucs4_to_koi8_u_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_koi8_u_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int koi8_u_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 
+       0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, 
+       0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248, 
+       0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7, 
+       0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, 
+       0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x255d, 0x255e, 
+       0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, 
+       0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x256c, 0x00a9, 
+       0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 
+       0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 
+       0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/koi_7.h b/gpsbabel/cet/koi_7.h
new file mode 100644 (file)
index 0000000..7e94ce3
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "KOI-7" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef koi_7_h
+#define koi_7_h
+
+#define cet_cs_name_koi_7 "KOI-7"
+
+const char *cet_cs_alias_koi_7[] = 
+{
+       "KOI-7", NULL
+};
+
+#define cet_ucs4_ofs_koi_7 36
+#define cet_ucs4_cnt_koi_7 92
+
+const int cet_ucs4_map_koi_7[cet_ucs4_cnt_koi_7] =
+{
+       0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 
+       0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 
+       0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 
+       0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 
+       0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 
+       0x005c, 0x005d, 0x005e, 0x005f, 0x042e, 0x0410, 0x0411, 0x0426, 
+       0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 
+       0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421, 
+       0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 
+       0x042d, 0x0429, 0x0427, 0x007f
+};
+
+#define cet_ucs4_to_koi_7_ct 32
+
+const cet_ucs4_link_t cet_ucs4_to_koi_7_links[cet_ucs4_to_koi_7_ct] =
+{
+        {0x00a4, 0x24} /* sign */,
+        {0x0410, 0x61} /* capital letter a */,
+        {0x0411, 0x62} /* capital letter be */,
+        {0x0412, 0x77} /* capital letter ve */,
+        {0x0413, 0x67} /* capital letter ghe */,
+        {0x0414, 0x64} /* capital letter de */,
+        {0x0415, 0x65} /* capital letter ie */,
+        {0x0416, 0x76} /* capital letter zhe */,
+        {0x0417, 0x7a} /* capital letter ze */,
+        {0x0418, 0x69} /* capital letter i */,
+        {0x0419, 0x6a} /* capital letter short i */,
+        {0x041a, 0x6b} /* capital letter ka */,
+        {0x041b, 0x6c} /* capital letter el */,
+        {0x041c, 0x6d} /* capital letter em */,
+        {0x041d, 0x6e} /* capital letter en */,
+        {0x041e, 0x6f} /* capital letter o */,
+        {0x041f, 0x70} /* capital letter pe */,
+        {0x0420, 0x72} /* capital letter er */,
+        {0x0421, 0x73} /* capital letter es */,
+        {0x0422, 0x74} /* capital letter te */,
+        {0x0423, 0x75} /* capital letter u */,
+        {0x0424, 0x66} /* capital letter ef */,
+        {0x0425, 0x68} /* capital letter ha */,
+        {0x0426, 0x63} /* capital letter tse */,
+        {0x0427, 0x7e} /* capital letter che */,
+        {0x0428, 0x7b} /* capital letter sha */,
+        {0x0429, 0x7d} /* capital letter shcha */,
+        {0x042b, 0x79} /* capital letter yeru */,
+        {0x042c, 0x78} /* capital letter soft sign */,
+        {0x042d, 0x7c} /* capital letter e */,
+        {0x042e, 0x60} /* capital letter yu */,
+        {0x042f, 0x71} /* capital letter ya */
+};
+
+/*
+#define cet_ucs4_to_koi_7_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_koi_7_extra[cet_ucs4_to_koi_7_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_koi_7 =        /* defined in cet.h */
+{      
+       cet_cs_name_koi_7,              /* name of character set        */
+       cet_cs_alias_koi_7,             /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_koi_7,             /* char to UCS-4 value table    */
+       cet_ucs4_ofs_koi_7,             /* first non standard character */
+       cet_ucs4_cnt_koi_7,             /* number of values in table    */
+
+       cet_ucs4_to_koi_7_links,        /* UCS-4 to char links          */
+       cet_ucs4_to_koi_7_ct,           /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int koi_7_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+       0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 
+       0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/koi_8.h b/gpsbabel/cet/koi_8.h
new file mode 100644 (file)
index 0000000..8b4795b
--- /dev/null
@@ -0,0 +1,191 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "KOI-8" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef koi_8_h
+#define koi_8_h
+
+#define cet_cs_name_koi_8 "KOI-8"
+
+const char *cet_cs_alias_koi_8[] = 
+{
+       "KOI-8", "GOST_19768-74", NULL
+};
+
+#define cet_ucs4_ofs_koi_8 128
+#define cet_ucs4_cnt_koi_8 127
+
+const int cet_ucs4_map_koi_8[cet_ucs4_cnt_koi_8] =
+{
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+       0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 
+       0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 
+       0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+       0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 
+       0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427
+};
+
+#define cet_ucs4_to_koi_8_ct 63
+
+const cet_ucs4_link_t cet_ucs4_to_koi_8_links[cet_ucs4_to_koi_8_ct] =
+{
+        {0x0410, 0xe1} /* capital letter a */,
+        {0x0411, 0xe2} /* capital letter be */,
+        {0x0412, 0xf7} /* capital letter ve */,
+        {0x0413, 0xe7} /* capital letter ghe */,
+        {0x0414, 0xe4} /* capital letter de */,
+        {0x0415, 0xe5} /* capital letter ie */,
+        {0x0416, 0xf6} /* capital letter zhe */,
+        {0x0417, 0xfa} /* capital letter ze */,
+        {0x0418, 0xe9} /* capital letter i */,
+        {0x0419, 0xea} /* capital letter short i */,
+        {0x041a, 0xeb} /* capital letter ka */,
+        {0x041b, 0xec} /* capital letter el */,
+        {0x041c, 0xed} /* capital letter em */,
+        {0x041d, 0xee} /* capital letter en */,
+        {0x041e, 0xef} /* capital letter o */,
+        {0x041f, 0xf0} /* capital letter pe */,
+        {0x0420, 0xf2} /* capital letter er */,
+        {0x0421, 0xf3} /* capital letter es */,
+        {0x0422, 0xf4} /* capital letter te */,
+        {0x0423, 0xf5} /* capital letter u */,
+        {0x0424, 0xe6} /* capital letter ef */,
+        {0x0425, 0xe8} /* capital letter ha */,
+        {0x0426, 0xe3} /* capital letter tse */,
+        {0x0427, 0xfe} /* capital letter che */,
+        {0x0428, 0xfb} /* capital letter sha */,
+        {0x0429, 0xfd} /* capital letter shcha */,
+        {0x042b, 0xf9} /* capital letter yeru */,
+        {0x042c, 0xf8} /* capital letter soft sign */,
+        {0x042d, 0xfc} /* capital letter e */,
+        {0x042e, 0xe0} /* capital letter yu */,
+        {0x042f, 0xf1} /* capital letter ya */,
+        {0x0430, 0xc1} /* small letter a */,
+        {0x0431, 0xc2} /* small letter be */,
+        {0x0432, 0xd7} /* small letter ve */,
+        {0x0433, 0xc7} /* small letter ghe */,
+        {0x0434, 0xc4} /* small letter de */,
+        {0x0435, 0xc5} /* small letter ie */,
+        {0x0436, 0xd6} /* small letter zhe */,
+        {0x0437, 0xda} /* small letter ze */,
+        {0x0438, 0xc9} /* small letter i */,
+        {0x0439, 0xca} /* small letter short i */,
+        {0x043a, 0xcb} /* small letter ka */,
+        {0x043b, 0xcc} /* small letter el */,
+        {0x043c, 0xcd} /* small letter em */,
+        {0x043d, 0xce} /* small letter en */,
+        {0x043e, 0xcf} /* small letter o */,
+        {0x043f, 0xd0} /* small letter pe */,
+        {0x0440, 0xd2} /* small letter er */,
+        {0x0441, 0xd3} /* small letter es */,
+        {0x0442, 0xd4} /* small letter te */,
+        {0x0443, 0xd5} /* small letter u */,
+        {0x0444, 0xc6} /* small letter ef */,
+        {0x0445, 0xc8} /* small letter ha */,
+        {0x0446, 0xc3} /* small letter tse */,
+        {0x0447, 0xde} /* small letter che */,
+        {0x0448, 0xdb} /* small letter sha */,
+        {0x0449, 0xdd} /* small letter shcha */,
+        {0x044a, 0xdf} /* small letter hard sign */,
+        {0x044b, 0xd9} /* small letter yeru */,
+        {0x044c, 0xd8} /* small letter soft sign */,
+        {0x044d, 0xdc} /* small letter e */,
+        {0x044e, 0xc0} /* small letter yu */,
+        {0x044f, 0xd1} /* small letter ya */
+};
+
+/*
+#define cet_ucs4_to_koi_8_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_koi_8_extra[cet_ucs4_to_koi_8_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_koi_8 =        /* defined in cet.h */
+{      
+       cet_cs_name_koi_8,              /* name of character set        */
+       cet_cs_alias_koi_8,             /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_koi_8,             /* char to UCS-4 value table    */
+       cet_ucs4_ofs_koi_8,             /* first non standard character */
+       cet_ucs4_cnt_koi_8,             /* number of values in table    */
+
+       cet_ucs4_to_koi_8_links,        /* UCS-4 to char links          */
+       cet_ucs4_to_koi_8_ct,           /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int koi_8_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+       0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 
+       0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 
+       0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 
+       0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 
+       0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 
+       0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 
+       0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 
+       0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/koi_8_cs2.h b/gpsbabel/cet/koi_8_cs2.h
new file mode 100644 (file)
index 0000000..3398b91
--- /dev/null
@@ -0,0 +1,222 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "KOI-8_CS2" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef koi_8_cs2_h
+#define koi_8_cs2_h
+
+#define cet_cs_name_koi_8_cs2 "KOI-8_CS2"
+
+const char *cet_cs_alias_koi_8_cs2[] = 
+{
+       "KOI-8_CS2", NULL
+};
+
+#define cet_ucs4_ofs_koi_8_cs2 36
+#define cet_ucs4_cnt_koi_8_cs2 219
+
+const int cet_ucs4_map_koi_8_cs2[cet_ucs4_cnt_koi_8_cs2] =
+{
+       0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 
+       0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 
+       0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 
+       0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 
+       0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 
+       0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 
+       0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 
+       0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 
+       0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 
+       0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 
+       0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 
+       0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 
+       0x009c, 0x009d, 0x009e, 0x009f, 0x00a0,     -1, 0x00b4,     -1, 
+       0x007e,     -1, 0x02d8, 0x02d9, 0x00a8,     -1, 0x02da, 0x00b8, 
+           -1, 0x02dd, 0x02db, 0x02c7, 0x00a9, 0x2122, 0x250c, 0x2510, 
+       0x2514, 0x2518, 0x2500, 0x2193, 0x03a9, 0x00a7, 0x03b1, 0x03b3, 
+       0x03b5, 0x03bc, 0x03c0, 0x03c9, 0x00e0, 0x00e1, 0x01ce, 0x010d, 
+       0x010f, 0x011b, 0x0155,     -1, 0x00fc, 0x00ed, 0x016f, 0x013a, 
+       0x013e, 0x00f6, 0x0148, 0x00f3, 0x00f4, 0x00e4, 0x0159, 0x0161, 
+       0x0165, 0x00fa, 0x00eb, 0x00e9, 0x0171, 0x00fd, 0x017e,     -1, 
+           -1, 0x0151, 0x0117, 0x00df, 0x00c0, 0x00c1, 0x01cd, 0x010c, 
+       0x010e, 0x011a, 0x0154,     -1, 0x00dc, 0x00cd, 0x016e, 0x0139, 
+       0x013d, 0x00d6, 0x0147, 0x00d3, 0x00d4, 0x00c4, 0x0158, 0x0160, 
+       0x0164, 0x00da, 0x00cb, 0x00c9, 0x0170, 0x00dd, 0x017d,     -1, 
+           -1, 0x0150, 0x0116
+};
+
+#define cet_ucs4_to_koi_8_cs2_ct 82
+
+const cet_ucs4_link_t cet_ucs4_to_koi_8_cs2_links[cet_ucs4_to_koi_8_cs2_ct] =
+{
+        {0x007e, 0xa4} /* tilde */,
+        {0x00a4, 0x24} /* sign */,
+        {0x00a7, 0xb9} /* sign */,
+        {0x00a9, 0xb0} /* sign */,
+        {0x00b4, 0xa2} /* accent */,
+        {0x00b8, 0xab} /* cedilla */,
+        {0x00c0, 0xe0} /* capital letter a with grave */,
+        {0x00c1, 0xe1} /* capital letter a with acute */,
+        {0x00c4, 0xf1} /* capital letter a with diaeresis */,
+        {0x00c9, 0xf7} /* capital letter e with acute */,
+        {0x00cb, 0xf6} /* capital letter e with diaeresis */,
+        {0x00cd, 0xe9} /* capital letter i with acute */,
+        {0x00d3, 0xef} /* capital letter o with acute */,
+        {0x00d4, 0xf0} /* capital letter o with circumflex */,
+        {0x00d6, 0xed} /* capital letter o with diaeresis */,
+        {0x00da, 0xf5} /* capital letter u with acute */,
+        {0x00dc, 0xe8} /* capital letter u with diaeresis */,
+        {0x00dd, 0xf9} /* capital letter y with acute */,
+        {0x00e0, 0xc0} /* small letter a with grave */,
+        {0x00e1, 0xc1} /* small letter a with acute */,
+        {0x00e4, 0xd1} /* small letter a with diaeresis */,
+        {0x00e9, 0xd7} /* small letter e with acute */,
+        {0x00eb, 0xd6} /* small letter e with diaeresis */,
+        {0x00ed, 0xc9} /* small letter i with acute */,
+        {0x00f3, 0xcf} /* small letter o with acute */,
+        {0x00f4, 0xd0} /* small letter o with circumflex */,
+        {0x00f6, 0xcd} /* small letter o with diaeresis */,
+        {0x00fa, 0xd5} /* small letter u with acute */,
+        {0x00fc, 0xc8} /* small letter u with diaeresis */,
+        {0x00fd, 0xd9} /* small letter y with acute */,
+        {0x010c, 0xe3} /* capital letter c with caron */,
+        {0x010d, 0xc3} /* small letter c with caron */,
+        {0x010e, 0xe4} /* capital letter d with caron */,
+        {0x010f, 0xc4} /* small letter d with caron */,
+        {0x0116, 0xfe} /* capital letter e with dot above */,
+        {0x0117, 0xde} /* small letter e with dot above */,
+        {0x011a, 0xe5} /* capital letter e with caron */,
+        {0x011b, 0xc5} /* small letter e with caron */,
+        {0x0139, 0xeb} /* capital letter l with acute */,
+        {0x013a, 0xcb} /* small letter l with acute */,
+        {0x013d, 0xec} /* capital letter l with caron */,
+        {0x013e, 0xcc} /* small letter l with caron */,
+        {0x0147, 0xee} /* capital letter n with caron */,
+        {0x0148, 0xce} /* small letter n with caron */,
+        {0x0150, 0xfd} /* capital letter o with double acute */,
+        {0x0151, 0xdd} /* small letter o with double acute */,
+        {0x0154, 0xe6} /* capital letter r with acute */,
+        {0x0155, 0xc6} /* small letter r with acute */,
+        {0x0158, 0xf2} /* capital letter r with caron */,
+        {0x0159, 0xd2} /* small letter r with caron */,
+        {0x0160, 0xf3} /* capital letter s with caron */,
+        {0x0161, 0xd3} /* small letter s with caron */,
+        {0x0164, 0xf4} /* capital letter t with caron */,
+        {0x0165, 0xd4} /* small letter t with caron */,
+        {0x016e, 0xea} /* capital letter u with ring above */,
+        {0x016f, 0xca} /* small letter u with ring above */,
+        {0x0170, 0xf8} /* capital letter u with double acute */,
+        {0x0171, 0xd8} /* small letter u with double acute */,
+        {0x017d, 0xfa} /* capital letter z with caron */,
+        {0x017e, 0xda} /* small letter z with caron */,
+        {0x01cd, 0xe2} /* capital letter a with caron */,
+        {0x01ce, 0xc2} /* small letter a with caron */,
+        {0x02c7, 0xaf} /* caron */,
+        {0x02d8, 0xa6} /* breve */,
+        {0x02d9, 0xa7} /* above */,
+        {0x02da, 0xaa} /* above */,
+        {0x02db, 0xae} /* ogonek */,
+        {0x02dd, 0xad} /* acute accent */,
+        {0x03a9, 0xb8} /* capital letter omega */,
+        {0x03b1, 0xba} /* small letter alpha */,
+        {0x03b3, 0xbb} /* small letter gamma */,
+        {0x03b5, 0xbc} /* small letter epsilon */,
+        {0x03bc, 0xbd} /* small letter mu */,
+        {0x03c0, 0xbe} /* small letter pi */,
+        {0x03c9, 0xbf} /* small letter omega */,
+        {0x2122, 0xb1} /* mark sign */,
+        {0x2193, 0xb7} /* arrow */,
+        {0x2500, 0xb6} /* drawings light horizontal */,
+        {0x250c, 0xb2} /* drawings light down and right */,
+        {0x2510, 0xb3} /* drawings light down and left */,
+        {0x2514, 0xb4} /* drawings light up and right */,
+        {0x2518, 0xb5} /* drawings light up and left */
+};
+
+/*
+#define cet_ucs4_to_koi_8_cs2_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_koi_8_cs2_extra[cet_ucs4_to_koi_8_cs2_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_koi_8_cs2 =    /* defined in cet.h */
+{      
+       cet_cs_name_koi_8_cs2,          /* name of character set        */
+       cet_cs_alias_koi_8_cs2,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_koi_8_cs2,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_koi_8_cs2,         /* first non standard character */
+       cet_ucs4_cnt_koi_8_cs2,         /* number of values in table    */
+
+       cet_ucs4_to_koi_8_cs2_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_koi_8_cs2_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int koi_8_cs2_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00a0,     -1, 0x00b4,     -1, 0x007e,     -1, 0x02d8, 0x02d9, 
+       0x00a8,     -1, 0x02da, 0x00b8,     -1, 0x02dd, 0x02db, 0x02c7, 
+       0x00a9, 0x2122, 0x250c, 0x2510, 0x2514, 0x2518, 0x2500, 0x2193, 
+       0x03a9, 0x00a7, 0x03b1, 0x03b3, 0x03b5, 0x03bc, 0x03c0, 0x03c9, 
+       0x00e0, 0x00e1, 0x01ce, 0x010d, 0x010f, 0x011b, 0x0155,     -1, 
+       0x00fc, 0x00ed, 0x016f, 0x013a, 0x013e, 0x00f6, 0x0148, 0x00f3, 
+       0x00f4, 0x00e4, 0x0159, 0x0161, 0x0165, 0x00fa, 0x00eb, 0x00e9, 
+       0x0171, 0x00fd, 0x017e,     -1,     -1, 0x0151, 0x0117, 0x00df, 
+       0x00c0, 0x00c1, 0x01cd, 0x010c, 0x010e, 0x011a, 0x0154,     -1, 
+       0x00dc, 0x00cd, 0x016e, 0x0139, 0x013d, 0x00d6, 0x0147, 0x00d3, 
+       0x00d4, 0x00c4, 0x0158, 0x0160, 0x0164, 0x00da, 0x00cb, 0x00c9, 
+       0x0170, 0x00dd, 0x017d,     -1,     -1, 0x0150, 0x0116,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ksc5636.h b/gpsbabel/cet/ksc5636.h
new file mode 100644 (file)
index 0000000..ff513c5
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "KSC5636" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ksc5636_h
+#define ksc5636_h
+
+#define cet_cs_name_ksc5636 "KSC5636"
+
+const char *cet_cs_alias_ksc5636[] = 
+{
+       "KSC5636", "ISO646-KR", NULL
+};
+
+#define cet_ucs4_ofs_ksc5636 92
+#define cet_ucs4_cnt_ksc5636 36
+
+const int cet_ucs4_map_ksc5636[cet_ucs4_cnt_ksc5636] =
+{
+       0x20a9, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 
+       0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 
+       0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 
+       0x007c, 0x007d, 0x007e, 0x007f
+};
+
+#define cet_ucs4_to_ksc5636_ct 1
+
+const cet_ucs4_link_t cet_ucs4_to_ksc5636_links[cet_ucs4_to_ksc5636_ct] =
+{
+        {0x20a9, 0x5c} /* sign */
+};
+
+/*
+#define cet_ucs4_to_ksc5636_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ksc5636_extra[cet_ucs4_to_ksc5636_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ksc5636 =      /* defined in cet.h */
+{      
+       cet_cs_name_ksc5636,            /* name of character set        */
+       cet_cs_alias_ksc5636,           /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ksc5636,           /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ksc5636,           /* first non standard character */
+       cet_ucs4_cnt_ksc5636,           /* number of values in table    */
+
+       cet_ucs4_to_ksc5636_links,      /* UCS-4 to char links          */
+       cet_ucs4_to_ksc5636_ct,         /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ksc5636_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x20a9, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/latin_greek_1.h b/gpsbabel/cet/latin_greek_1.h
new file mode 100644 (file)
index 0000000..ffb0163
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "Latin-greek-1" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef latin_greek_1_h
+#define latin_greek_1_h
+
+#define cet_cs_name_latin_greek_1 "Latin-greek-1"
+
+const char *cet_cs_alias_latin_greek_1[] = 
+{
+       "Latin-greek-1", "iso-ir-27", NULL
+};
+
+#define cet_ucs4_ofs_latin_greek_1 33
+#define cet_ucs4_cnt_latin_greek_1 95
+
+const int cet_ucs4_map_latin_greek_1[cet_ucs4_cnt_latin_greek_1] =
+{
+       0x039e, 0x0022, 0x0393, 0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 
+       0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 
+       0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 
+       0x0039, 0x03a8, 0x003b, 0x003c, 0x003d, 0x003e, 0x03a0, 0x0394, 
+       0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 
+       0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x03a9, 0x0398, 0x03a6, 0x039b, 0x03a3, 0x0060, 
+       0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 
+       0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f
+};
+
+#define cet_ucs4_to_latin_greek_1_ct 12
+
+const cet_ucs4_link_t cet_ucs4_to_latin_greek_1_links[cet_ucs4_to_latin_greek_1_ct] =
+{
+        {0x00a4, 0x24} /* sign */,
+        {0x0393, 0x23} /* capital letter gamma */,
+        {0x0394, 0x40} /* capital letter delta */,
+        {0x0398, 0x5c} /* capital letter theta */,
+        {0x039b, 0x5e} /* capital letter lamda */,
+        {0x039e, 0x21} /* capital letter xi */,
+        {0x03a0, 0x3f} /* capital letter pi */,
+        {0x03a3, 0x5f} /* capital letter sigma */,
+        {0x03a6, 0x5d} /* capital letter phi */,
+        {0x03a8, 0x3a} /* capital letter psi */,
+        {0x03a9, 0x5b} /* capital letter omega */,
+        {0x203e, 0x7e} /* overline */
+};
+
+/*
+#define cet_ucs4_to_latin_greek_1_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_latin_greek_1_extra[cet_ucs4_to_latin_greek_1_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_latin_greek_1 =        /* defined in cet.h */
+{      
+       cet_cs_name_latin_greek_1,              /* name of character set        */
+       cet_cs_alias_latin_greek_1,             /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_latin_greek_1,             /* char to UCS-4 value table    */
+       cet_ucs4_ofs_latin_greek_1,             /* first non standard character */
+       cet_ucs4_cnt_latin_greek_1,             /* number of values in table    */
+
+       cet_ucs4_to_latin_greek_1_links,        /* UCS-4 to char links          */
+       cet_ucs4_to_latin_greek_1_ct,           /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int latin_greek_1_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x039e, 0x0022, 0x0393, 0x00a4, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x03a8, 0x003b, 0x003c, 0x003d, 0x003e, 0x03a0, 
+       0x0394, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x03a9, 0x0398, 0x03a6, 0x039b, 0x03a3, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/mac_is.h b/gpsbabel/cet/mac_is.h
new file mode 100644 (file)
index 0000000..6c00503
--- /dev/null
@@ -0,0 +1,248 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "mac-is" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef mac_is_h
+#define mac_is_h
+
+#define cet_cs_name_mac_is "mac-is"
+
+const char *cet_cs_alias_mac_is[] = 
+{
+       "mac-is", NULL
+};
+
+#define cet_ucs4_ofs_mac_is 128
+#define cet_ucs4_cnt_mac_is 128
+
+const int cet_ucs4_map_mac_is[cet_ucs4_cnt_mac_is] =
+{
+       0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 
+       0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, 
+       0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 
+       0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 
+       0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 
+       0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, 
+       0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, 
+       0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8, 
+       0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x0394, 0x00ab, 
+       0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, 
+       0x2014, 0x2013, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25c6, 
+       0x00ff, 0x0178, 0x2044, 0x00a4, 0x0110, 0x0111, 0x00de, 0x00fe, 
+       0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 
+       0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 
+       0xe01e, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131,     -1,     -1, 
+       0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+};
+
+#define cet_ucs4_to_mac_is_ct 120
+
+const cet_ucs4_link_t cet_ucs4_to_mac_is_links[cet_ucs4_to_mac_is_ct] =
+{
+        {0x00a0, 0xca} /* space */,
+        {0x00a1, 0xc1} /* exclamation mark */,
+        {0x00a4, 0xdb} /* sign */,
+        {0x00a5, 0xb4} /* sign */,
+        {0x00a7, 0xa4} /* sign */,
+        {0x00a8, 0xac} /* diaeresis */,
+        {0x00aa, 0xbb} /* ordinal indicator */,
+        {0x00ab, 0xc7} /* double angle quotation mark */,
+        {0x00ac, 0xc2} /* sign */,
+        {0x00ae, 0xa8} /* sign */,
+        {0x00af, 0xf8} /* macron */,
+        {0x00b0, 0xa1} /* sign */,
+        {0x00b4, 0xab} /* accent */,
+        {0x00b6, 0xa6} /* sign */,
+        {0x00b7, 0xe1} /* dot */,
+        {0x00b8, 0xfc} /* cedilla */,
+        {0x00ba, 0xbc} /* ordinal indicator */,
+        {0x00bb, 0xc8} /* double angle quotation mark */,
+        {0x00bf, 0xc0} /* question mark */,
+        {0x00c0, 0xcb} /* capital letter a with grave */,
+        {0x00c1, 0xe7} /* capital letter a with acute */,
+        {0x00c2, 0xe5} /* capital letter a with circumflex */,
+        {0x00c3, 0xcc} /* capital letter a with tilde */,
+        {0x00c4, 0x80} /* capital letter a with diaeresis */,
+        {0x00c5, 0x81} /* capital letter a with ring above */,
+        {0x00c6, 0xae} /* capital letter ae */,
+        {0x00c7, 0x82} /* capital letter c with cedilla */,
+        {0x00c8, 0xe9} /* capital letter e with grave */,
+        {0x00c9, 0x83} /* capital letter e with acute */,
+        {0x00ca, 0xe6} /* capital letter e with circumflex */,
+        {0x00cb, 0xe8} /* capital letter e with diaeresis */,
+        {0x00cc, 0xed} /* capital letter i with grave */,
+        {0x00cd, 0xea} /* capital letter i with acute */,
+        {0x00ce, 0xeb} /* capital letter i with circumflex */,
+        {0x00cf, 0xec} /* capital letter i with diaeresis */,
+        {0x00d1, 0x84} /* capital letter n with tilde */,
+        {0x00d2, 0xf1} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xef} /* capital letter o with circumflex */,
+        {0x00d5, 0xcd} /* capital letter o with tilde */,
+        {0x00d6, 0x85} /* capital letter o with diaeresis */,
+        {0x00d8, 0xaf} /* capital letter o with stroke */,
+        {0x00d9, 0xf4} /* capital letter u with grave */,
+        {0x00da, 0xf2} /* capital letter u with acute */,
+        {0x00db, 0xf3} /* capital letter u with circumflex */,
+        {0x00dc, 0x86} /* capital letter u with diaeresis */,
+        {0x00df, 0xa7} /* small letter sharp s (german) */,
+        {0x00e0, 0x88} /* small letter a with grave */,
+        {0x00e1, 0x87} /* small letter a with acute */,
+        {0x00e2, 0x89} /* small letter a with circumflex */,
+        {0x00e3, 0x8b} /* small letter a with tilde */,
+        {0x00e4, 0x8a} /* small letter a with diaeresis */,
+        {0x00e5, 0x8c} /* small letter a with ring above */,
+        {0x00e6, 0xbe} /* small letter ae */,
+        {0x00e7, 0x8d} /* small letter c with cedilla */,
+        {0x00e8, 0x8f} /* small letter e with grave */,
+        {0x00e9, 0x8e} /* small letter e with acute */,
+        {0x00ea, 0x90} /* small letter e with circumflex */,
+        {0x00eb, 0x91} /* small letter e with diaeresis */,
+        {0x00ec, 0x93} /* small letter i with grave */,
+        {0x00ed, 0x92} /* small letter i with acute */,
+        {0x00ee, 0x94} /* small letter i with circumflex */,
+        {0x00ef, 0x95} /* small letter i with diaeresis */,
+        {0x00f1, 0x96} /* small letter n with tilde */,
+        {0x00f2, 0x98} /* small letter o with grave */,
+        {0x00f3, 0x97} /* small letter o with acute */,
+        {0x00f4, 0x99} /* small letter o with circumflex */,
+        {0x00f5, 0x9b} /* small letter o with tilde */,
+        {0x00f6, 0x9a} /* small letter o with diaeresis */,
+        {0x00f7, 0xd6} /* sign */,
+        {0x00f8, 0xbf} /* small letter o with stroke */,
+        {0x00f9, 0x9d} /* small letter u with grave */,
+        {0x00fa, 0x9c} /* small letter u with acute */,
+        {0x00fb, 0x9e} /* small letter u with circumflex */,
+        {0x00fc, 0x9f} /* small letter u with diaeresis */,
+        {0x00fe, 0xdf} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xd8} /* small letter y with diaeresis */,
+        {0x0110, 0xdc} /* capital letter d with stroke */,
+        {0x0111, 0xdd} /* small letter d with stroke */,
+        {0x0131, 0xf5} /* small letter i dotless */,
+        {0x0152, 0xce} /* capital ligature oe */,
+        {0x0153, 0xcf} /* small ligature oe */,
+        {0x0178, 0xd9} /* capital letter y with diaeresis */,
+        {0x0192, 0xc4} /* minuscule latine f hameçon */,
+        {0x02c7, 0xff} /* caron */,
+        {0x02d8, 0xf9} /* breve */,
+        {0x02d9, 0xfa} /* above */,
+        {0x02da, 0xfb} /* above */,
+        {0x02db, 0xfe} /* ogonek */,
+        {0x02dd, 0xfd} /* acute accent */,
+        {0x0394, 0xc6} /* capital letter delta */,
+        {0x03a9, 0xbd} /* capital letter omega */,
+        {0x03c0, 0xb9} /* small letter pi */,
+        {0x2013, 0xd1} /* dash */,
+        {0x2014, 0xd0} /* dash */,
+        {0x2018, 0xd4} /* single quotation mark */,
+        {0x2019, 0xd5} /* single quotation mark */,
+        {0x201a, 0xe2} /* low-9 quotation mark */,
+        {0x201c, 0xd2} /* double quotation mark */,
+        {0x201d, 0xd3} /* double quotation mark */,
+        {0x201e, 0xe3} /* low-9 quotation mark */,
+        {0x2020, 0xa0} /* dagger */,
+        {0x2021, 0xe0} /* dagger */,
+        {0x2022, 0xa5} /* puce */,
+        {0x2026, 0xc9} /* horizontal ellipsis */,
+        {0x2030, 0xe4} /* mille sign */,
+        {0x2044, 0xda} /* slash */,
+        {0x2122, 0xaa} /* mark sign */,
+        {0x2202, 0xb6} /* differential */,
+        {0x220f, 0xb8} /* product */,
+        {0x2211, 0xb7} /* summation */,
+        {0x221a, 0xc3} /* root */,
+        {0x221e, 0xb0} /* infinity */,
+        {0x222b, 0xba} /* integral */,
+        {0x2248, 0xc5} /* equal to */,
+        {0x2260, 0xad} /* equal to */,
+        {0x2264, 0xb2} /* or equal to */,
+        {0x2265, 0xb3} /* or equal to */,
+        {0x25c6, 0xd7} /* diamond */,
+        {0xe01e, 0xf0} /*  */
+};
+
+/*
+#define cet_ucs4_to_mac_is_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_mac_is_extra[cet_ucs4_to_mac_is_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_mac_is =       /* defined in cet.h */
+{      
+       cet_cs_name_mac_is,             /* name of character set        */
+       cet_cs_alias_mac_is,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_mac_is,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_mac_is,            /* first non standard character */
+       cet_ucs4_cnt_mac_is,            /* number of values in table    */
+
+       cet_ucs4_to_mac_is_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_mac_is_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int mac_is_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 
+       0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, 
+       0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 
+       0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 
+       0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 
+       0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, 
+       0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, 
+       0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8, 
+       0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x0394, 0x00ab, 
+       0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, 
+       0x2014, 0x2013, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25c6, 
+       0x00ff, 0x0178, 0x2044, 0x00a4, 0x0110, 0x0111, 0x00de, 0x00fe, 
+       0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 
+       0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 
+       0xe01e, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131,     -1,     -1, 
+       0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/macintosh.h b/gpsbabel/cet/macintosh.h
new file mode 100644 (file)
index 0000000..f0cafc5
--- /dev/null
@@ -0,0 +1,250 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "macintosh" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef macintosh_h
+#define macintosh_h
+
+#define cet_cs_name_macintosh "macintosh"
+
+const char *cet_cs_alias_macintosh[] = 
+{
+       "macintosh/CR", "csMacintosh", "mac/CR", "MacRoman",
+       NULL
+};
+
+#define cet_ucs4_ofs_macintosh 128
+#define cet_ucs4_cnt_macintosh 128
+
+const int cet_ucs4_map_macintosh[cet_ucs4_cnt_macintosh] =
+{
+       0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 
+       0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, 
+       0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 
+       0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 
+       0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 
+       0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, 
+       0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, 
+       0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8, 
+       0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x0394, 0x00ab, 
+       0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x2126, 0x0152, 0x0153, 
+       0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 
+       0x00ff, 0x0178, 0x2044, 0x00a4, 0x2039, 0x203a, 0xfb01, 0xfb02, 
+       0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 
+       0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 
+       0xe01e, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131,     -1,     -1, 
+       0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+};
+
+#define cet_ucs4_to_macintosh_ct 121
+
+const cet_ucs4_link_t cet_ucs4_to_macintosh_links[cet_ucs4_to_macintosh_ct] =
+{
+        {0x00a0, 0xca} /* space */,
+        {0x00a1, 0xc1} /* exclamation mark */,
+        {0x00a4, 0xdb} /* sign */,
+        {0x00a5, 0xb4} /* sign */,
+        {0x00a7, 0xa4} /* sign */,
+        {0x00a8, 0xac} /* diaeresis */,
+        {0x00aa, 0xbb} /* ordinal indicator */,
+        {0x00ab, 0xc7} /* double angle quotation mark */,
+        {0x00ac, 0xc2} /* sign */,
+        {0x00ae, 0xa8} /* sign */,
+        {0x00af, 0xf8} /* macron */,
+        {0x00b0, 0xa1} /* sign */,
+        {0x00b4, 0xab} /* accent */,
+        {0x00b6, 0xa6} /* sign */,
+        {0x00b7, 0xe1} /* dot */,
+        {0x00b8, 0xfc} /* cedilla */,
+        {0x00ba, 0xbc} /* ordinal indicator */,
+        {0x00bb, 0xc8} /* double angle quotation mark */,
+        {0x00bf, 0xc0} /* question mark */,
+        {0x00c0, 0xcb} /* capital letter a with grave */,
+        {0x00c1, 0xe7} /* capital letter a with acute */,
+        {0x00c2, 0xe5} /* capital letter a with circumflex */,
+        {0x00c3, 0xcc} /* capital letter a with tilde */,
+        {0x00c4, 0x80} /* capital letter a with diaeresis */,
+        {0x00c5, 0x81} /* capital letter a with ring above */,
+        {0x00c6, 0xae} /* capital letter ae */,
+        {0x00c7, 0x82} /* capital letter c with cedilla */,
+        {0x00c8, 0xe9} /* capital letter e with grave */,
+        {0x00c9, 0x83} /* capital letter e with acute */,
+        {0x00ca, 0xe6} /* capital letter e with circumflex */,
+        {0x00cb, 0xe8} /* capital letter e with diaeresis */,
+        {0x00cc, 0xed} /* capital letter i with grave */,
+        {0x00cd, 0xea} /* capital letter i with acute */,
+        {0x00ce, 0xeb} /* capital letter i with circumflex */,
+        {0x00cf, 0xec} /* capital letter i with diaeresis */,
+        {0x00d1, 0x84} /* capital letter n with tilde */,
+        {0x00d2, 0xf1} /* capital letter o with grave */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xef} /* capital letter o with circumflex */,
+        {0x00d6, 0x85} /* capital letter o with diaeresis */,
+        {0x00d8, 0xaf} /* capital letter o with stroke */,
+        {0x00d9, 0xf4} /* capital letter u with grave */,
+        {0x00da, 0xf2} /* capital letter u with acute */,
+        {0x00db, 0xf3} /* capital letter u with circumflex */,
+        {0x00dc, 0x86} /* capital letter u with diaeresis */,
+        {0x00df, 0xa7} /* small letter sharp s (german) */,
+        {0x00e0, 0x88} /* small letter a with grave */,
+        {0x00e1, 0x87} /* small letter a with acute */,
+        {0x00e2, 0x89} /* small letter a with circumflex */,
+        {0x00e3, 0x8b} /* small letter a with tilde */,
+        {0x00e4, 0x8a} /* small letter a with diaeresis */,
+        {0x00e5, 0x8c} /* small letter a with ring above */,
+        {0x00e6, 0xbe} /* small letter ae */,
+        {0x00e7, 0x8d} /* small letter c with cedilla */,
+        {0x00e8, 0x8f} /* small letter e with grave */,
+        {0x00e9, 0x8e} /* small letter e with acute */,
+        {0x00ea, 0x90} /* small letter e with circumflex */,
+        {0x00eb, 0x91} /* small letter e with diaeresis */,
+        {0x00ec, 0x93} /* small letter i with grave */,
+        {0x00ed, 0x92} /* small letter i with acute */,
+        {0x00ee, 0x94} /* small letter i with circumflex */,
+        {0x00ef, 0x95} /* small letter i with diaeresis */,
+        {0x00f1, 0x96} /* small letter n with tilde */,
+        {0x00f2, 0x98} /* small letter o with grave */,
+        {0x00f3, 0x97} /* small letter o with acute */,
+        {0x00f4, 0x99} /* small letter o with circumflex */,
+        {0x00f5, 0x9b} /* small letter o with tilde */,
+        {0x00f6, 0x9a} /* small letter o with diaeresis */,
+        {0x00f7, 0xd6} /* sign */,
+        {0x00f8, 0xbf} /* small letter o with stroke */,
+        {0x00f9, 0x9d} /* small letter u with grave */,
+        {0x00fa, 0x9c} /* small letter u with acute */,
+        {0x00fb, 0x9e} /* small letter u with circumflex */,
+        {0x00fc, 0x9f} /* small letter u with diaeresis */,
+        {0x00ff, 0xd8} /* small letter y with diaeresis */,
+        {0x0131, 0xf5} /* small letter i dotless */,
+        {0x0152, 0xce} /* capital ligature oe */,
+        {0x0153, 0xcf} /* small ligature oe */,
+        {0x0178, 0xd9} /* capital letter y with diaeresis */,
+        {0x0192, 0xc4} /* minuscule latine f hameçon */,
+        {0x02c7, 0xff} /* caron */,
+        {0x02d8, 0xf9} /* breve */,
+        {0x02d9, 0xfa} /* above */,
+        {0x02da, 0xfb} /* above */,
+        {0x02db, 0xfe} /* ogonek */,
+        {0x02dd, 0xfd} /* acute accent */,
+        {0x0394, 0xc6} /* capital letter delta */,
+        {0x03a9, 0xbd} /* capital letter omega */,
+        {0x03c0, 0xb9} /* small letter pi */,
+        {0x2013, 0xd0} /* dash */,
+        {0x2014, 0xd1} /* dash */,
+        {0x2018, 0xd4} /* single quotation mark */,
+        {0x2019, 0xd5} /* single quotation mark */,
+        {0x201a, 0xe2} /* low-9 quotation mark */,
+        {0x201c, 0xd2} /* double quotation mark */,
+        {0x201d, 0xd3} /* double quotation mark */,
+        {0x201e, 0xe3} /* low-9 quotation mark */,
+        {0x2020, 0xa0} /* dagger */,
+        {0x2021, 0xe0} /* dagger */,
+        {0x2022, 0xa5} /* puce */,
+        {0x2026, 0xc9} /* horizontal ellipsis */,
+        {0x2030, 0xe4} /* mille sign */,
+        {0x2039, 0xdc} /* left-pointing angle quotation mark */,
+        {0x203a, 0xdd} /* right-pointing angle quotation mark */,
+        {0x2044, 0xda} /* slash */,
+        {0x2122, 0xaa} /* mark sign */,
+        {0x2126, 0xcd} /* sign */,
+        {0x2202, 0xb6} /* differential */,
+        {0x220f, 0xb8} /* product */,
+        {0x2211, 0xb7} /* summation */,
+        {0x221a, 0xc3} /* root */,
+        {0x221e, 0xb0} /* infinity */,
+        {0x222b, 0xba} /* integral */,
+        {0x2248, 0xc5} /* equal to */,
+        {0x2260, 0xad} /* equal to */,
+        {0x2264, 0xb2} /* or equal to */,
+        {0x2265, 0xb3} /* or equal to */,
+        {0x25ca, 0xd7} /* lozenge */,
+        {0xe01e, 0xf0} /*  */,
+        {0xfb01, 0xde} /* small ligature fi */,
+        {0xfb02, 0xdf} /* small ligature fl */
+};
+
+/*
+#define cet_ucs4_to_macintosh_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_macintosh_extra[cet_ucs4_to_macintosh_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_macintosh =    /* defined in cet.h */
+{      
+       cet_cs_name_macintosh,          /* name of character set        */
+       cet_cs_alias_macintosh,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_macintosh,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_macintosh,         /* first non standard character */
+       cet_ucs4_cnt_macintosh,         /* number of values in table    */
+
+       cet_ucs4_to_macintosh_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_macintosh_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int macintosh_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 
+       0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, 
+       0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 
+       0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 
+       0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 
+       0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, 
+       0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, 
+       0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8, 
+       0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x0394, 0x00ab, 
+       0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x2126, 0x0152, 0x0153, 
+       0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 
+       0x00ff, 0x0178, 0x2044, 0x00a4, 0x2039, 0x203a, 0xfb01, 0xfb02, 
+       0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 
+       0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 
+       0xe01e, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131,     -1,     -1, 
+       0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/macintosh_ce.h b/gpsbabel/cet/macintosh_ce.h
new file mode 100644 (file)
index 0000000..1531f9d
--- /dev/null
@@ -0,0 +1,254 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "macintosh_ce" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef macintosh_ce_h
+#define macintosh_ce_h
+
+#define cet_cs_name_macintosh_ce "macintosh_ce"
+
+const char *cet_cs_alias_macintosh_ce[] = 
+{
+       "macintosh_ce/CR", "macce/CR", NULL
+};
+
+#define cet_ucs4_ofs_macintosh_ce 128
+#define cet_ucs4_cnt_macintosh_ce 128
+
+const int cet_ucs4_map_macintosh_ce[cet_ucs4_cnt_macintosh_ce] =
+{
+       0x00c4, 0x0100, 0x0101, 0x00c9, 0x0104, 0x00d6, 0x00dc, 0x00e1, 
+       0x0105, 0x010c, 0x00e4, 0x010d, 0x0106, 0x0107, 0x00e9, 0x0179, 
+       0x017a, 0x010e, 0x00ed, 0x010f, 0x0112, 0x0113, 0x0116, 0x00f3, 
+       0x0117, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x011a, 0x011b, 0x00fc, 
+       0x2020, 0x00b0, 0x0118, 0x00a3, 0x00a7, 0x2219, 0x00b6, 0x00df, 
+       0x00ae, 0x00a9, 0x2122, 0x0119, 0x00a8, 0x2260, 0x01f5, 0x012e, 
+       0x012f, 0x012a, 0x2264, 0x2265, 0x012b, 0x0136, 0x2202, 0x2211, 
+       0x0142, 0x013b, 0x013c, 0x013d, 0x013e, 0x0139, 0x013a, 0x0145, 
+       0x0146, 0x0143, 0x00ac, 0x221a, 0x0144, 0x0147, 0x0394, 0x00ab, 
+       0x00bb, 0x2026, 0x00a0, 0x0148, 0x0150, 0x00d5, 0x0151, 0x014c, 
+       0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25c6, 
+       0x014d, 0x0154, 0x0155, 0x0158, 0x2039, 0x203a, 0x0159, 0x0156, 
+       0x0157, 0x0160, 0x201a, 0x201e, 0x0161, 0x015a, 0x015b, 0x00c1, 
+       0x0164, 0x0165, 0x00cd, 0x017d, 0x017e, 0x016a, 0x00d3, 0x00d4, 
+       0x016b, 0x016e, 0x00da, 0x016f, 0x0170, 0x0171, 0x0172, 0x0173, 
+       0x00dd, 0x00fd, 0x0137, 0x017b, 0x0141, 0x017c, 0x0122, 0x02c7
+};
+
+#define cet_ucs4_to_macintosh_ce_ct 126
+
+const cet_ucs4_link_t cet_ucs4_to_macintosh_ce_links[cet_ucs4_to_macintosh_ce_ct] =
+{
+        {0x00a0, 0xca} /* space */,
+        {0x00a7, 0xa4} /* sign */,
+        {0x00a8, 0xac} /* diaeresis */,
+        {0x00ab, 0xc7} /* double angle quotation mark */,
+        {0x00ac, 0xc2} /* sign */,
+        {0x00ae, 0xa8} /* sign */,
+        {0x00b0, 0xa1} /* sign */,
+        {0x00b6, 0xa6} /* sign */,
+        {0x00bb, 0xc8} /* double angle quotation mark */,
+        {0x00c1, 0xe7} /* capital letter a with acute */,
+        {0x00c4, 0x80} /* capital letter a with diaeresis */,
+        {0x00c9, 0x83} /* capital letter e with acute */,
+        {0x00cd, 0xea} /* capital letter i with acute */,
+        {0x00d3, 0xee} /* capital letter o with acute */,
+        {0x00d4, 0xef} /* capital letter o with circumflex */,
+        {0x00d5, 0xcd} /* capital letter o with tilde */,
+        {0x00d6, 0x85} /* capital letter o with diaeresis */,
+        {0x00da, 0xf2} /* capital letter u with acute */,
+        {0x00dc, 0x86} /* capital letter u with diaeresis */,
+        {0x00dd, 0xf8} /* capital letter y with acute */,
+        {0x00df, 0xa7} /* small letter sharp s (german) */,
+        {0x00e1, 0x87} /* small letter a with acute */,
+        {0x00e4, 0x8a} /* small letter a with diaeresis */,
+        {0x00e9, 0x8e} /* small letter e with acute */,
+        {0x00ed, 0x92} /* small letter i with acute */,
+        {0x00f3, 0x97} /* small letter o with acute */,
+        {0x00f4, 0x99} /* small letter o with circumflex */,
+        {0x00f5, 0x9b} /* small letter o with tilde */,
+        {0x00f6, 0x9a} /* small letter o with diaeresis */,
+        {0x00f7, 0xd6} /* sign */,
+        {0x00fa, 0x9c} /* small letter u with acute */,
+        {0x00fc, 0x9f} /* small letter u with diaeresis */,
+        {0x00fd, 0xf9} /* small letter y with acute */,
+        {0x0100, 0x81} /* capital letter a with macron */,
+        {0x0101, 0x82} /* small letter a with macron */,
+        {0x0104, 0x84} /* capital letter a with ogonek */,
+        {0x0105, 0x88} /* small letter a with ogonek */,
+        {0x0106, 0x8c} /* capital letter c with acute */,
+        {0x0107, 0x8d} /* small letter c with acute */,
+        {0x010c, 0x89} /* capital letter c with caron */,
+        {0x010d, 0x8b} /* small letter c with caron */,
+        {0x010e, 0x91} /* capital letter d with caron */,
+        {0x010f, 0x93} /* small letter d with caron */,
+        {0x0112, 0x94} /* capital letter e with macron */,
+        {0x0113, 0x95} /* small letter e with macron */,
+        {0x0116, 0x96} /* capital letter e with dot above */,
+        {0x0117, 0x98} /* small letter e with dot above */,
+        {0x0118, 0xa2} /* capital letter e with ogonek */,
+        {0x0119, 0xab} /* small letter e with ogonek */,
+        {0x011a, 0x9d} /* capital letter e with caron */,
+        {0x011b, 0x9e} /* small letter e with caron */,
+        {0x0122, 0xfe} /* capital letter g with cedilla */,
+        {0x012a, 0xb1} /* capital letter i with macron */,
+        {0x012b, 0xb4} /* small letter i with macron */,
+        {0x012e, 0xaf} /* capital letter i with ogonek */,
+        {0x012f, 0xb0} /* small letter i with ogonek */,
+        {0x0136, 0xb5} /* capital letter k with cedilla */,
+        {0x0137, 0xfa} /* small letter k with cedilla */,
+        {0x0139, 0xbd} /* capital letter l with acute */,
+        {0x013a, 0xbe} /* small letter l with acute */,
+        {0x013b, 0xb9} /* capital letter l with cedilla */,
+        {0x013c, 0xba} /* small letter l with cedilla */,
+        {0x013d, 0xbb} /* capital letter l with caron */,
+        {0x013e, 0xbc} /* small letter l with caron */,
+        {0x0141, 0xfc} /* capital letter l with stroke */,
+        {0x0142, 0xb8} /* small letter l with stroke */,
+        {0x0143, 0xc1} /* capital letter n with acute */,
+        {0x0144, 0xc4} /* small letter n with acute */,
+        {0x0145, 0xbf} /* capital letter n with cedilla */,
+        {0x0146, 0xc0} /* small letter n with cedilla */,
+        {0x0147, 0xc5} /* capital letter n with caron */,
+        {0x0148, 0xcb} /* small letter n with caron */,
+        {0x014c, 0xcf} /* capital letter o with macron */,
+        {0x014d, 0xd8} /* small letter o with macron */,
+        {0x0150, 0xcc} /* capital letter o with double acute */,
+        {0x0151, 0xce} /* small letter o with double acute */,
+        {0x0154, 0xd9} /* capital letter r with acute */,
+        {0x0155, 0xda} /* small letter r with acute */,
+        {0x0156, 0xdf} /* capital letter r with cedilla */,
+        {0x0157, 0xe0} /* small letter r with cedilla */,
+        {0x0158, 0xdb} /* capital letter r with caron */,
+        {0x0159, 0xde} /* small letter r with caron */,
+        {0x015a, 0xe5} /* capital letter s with acute */,
+        {0x015b, 0xe6} /* small letter s with acute */,
+        {0x0160, 0xe1} /* capital letter s with caron */,
+        {0x0161, 0xe4} /* small letter s with caron */,
+        {0x0164, 0xe8} /* capital letter t with caron */,
+        {0x0165, 0xe9} /* small letter t with caron */,
+        {0x016a, 0xed} /* capital letter u with macron */,
+        {0x016b, 0xf0} /* small letter u with macron */,
+        {0x016e, 0xf1} /* capital letter u with ring above */,
+        {0x016f, 0xf3} /* small letter u with ring above */,
+        {0x0170, 0xf4} /* capital letter u with double acute */,
+        {0x0171, 0xf5} /* small letter u with double acute */,
+        {0x0172, 0xf6} /* capital letter u with ogonek */,
+        {0x0173, 0xf7} /* small letter u with ogonek */,
+        {0x0179, 0x8f} /* capital letter z with acute */,
+        {0x017a, 0x90} /* small letter z with acute */,
+        {0x017b, 0xfb} /* capital letter z with dot above */,
+        {0x017c, 0xfd} /* small letter z with dot above */,
+        {0x017d, 0xeb} /* capital letter z with caron */,
+        {0x017e, 0xec} /* small letter z with caron */,
+        {0x01f5, 0xae} /* small letter g with acute */,
+        {0x02c7, 0xff} /* caron */,
+        {0x0394, 0xc6} /* capital letter delta */,
+        {0x2013, 0xd0} /* dash */,
+        {0x2014, 0xd1} /* dash */,
+        {0x2018, 0xd4} /* single quotation mark */,
+        {0x2019, 0xd5} /* single quotation mark */,
+        {0x201a, 0xe2} /* low-9 quotation mark */,
+        {0x201c, 0xd2} /* double quotation mark */,
+        {0x201d, 0xd3} /* double quotation mark */,
+        {0x201e, 0xe3} /* low-9 quotation mark */,
+        {0x2020, 0xa0} /* dagger */,
+        {0x2026, 0xc9} /* horizontal ellipsis */,
+        {0x2039, 0xdc} /* left-pointing angle quotation mark */,
+        {0x203a, 0xdd} /* right-pointing angle quotation mark */,
+        {0x2122, 0xaa} /* mark sign */,
+        {0x2202, 0xb6} /* differential */,
+        {0x2211, 0xb7} /* summation */,
+        {0x2219, 0xa5} /* operator */,
+        {0x221a, 0xc3} /* root */,
+        {0x2260, 0xad} /* equal to */,
+        {0x2264, 0xb2} /* or equal to */,
+        {0x2265, 0xb3} /* or equal to */,
+        {0x25c6, 0xd7} /* diamond */
+};
+
+/*
+#define cet_ucs4_to_macintosh_ce_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_macintosh_ce_extra[cet_ucs4_to_macintosh_ce_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_macintosh_ce = /* defined in cet.h */
+{      
+       cet_cs_name_macintosh_ce,               /* name of character set        */
+       cet_cs_alias_macintosh_ce,              /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_macintosh_ce,              /* char to UCS-4 value table    */
+       cet_ucs4_ofs_macintosh_ce,              /* first non standard character */
+       cet_ucs4_cnt_macintosh_ce,              /* number of values in table    */
+
+       cet_ucs4_to_macintosh_ce_links, /* UCS-4 to char links          */
+       cet_ucs4_to_macintosh_ce_ct,            /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int macintosh_ce_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c4, 0x0100, 0x0101, 0x00c9, 0x0104, 0x00d6, 0x00dc, 0x00e1, 
+       0x0105, 0x010c, 0x00e4, 0x010d, 0x0106, 0x0107, 0x00e9, 0x0179, 
+       0x017a, 0x010e, 0x00ed, 0x010f, 0x0112, 0x0113, 0x0116, 0x00f3, 
+       0x0117, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x011a, 0x011b, 0x00fc, 
+       0x2020, 0x00b0, 0x0118, 0x00a3, 0x00a7, 0x2219, 0x00b6, 0x00df, 
+       0x00ae, 0x00a9, 0x2122, 0x0119, 0x00a8, 0x2260, 0x01f5, 0x012e, 
+       0x012f, 0x012a, 0x2264, 0x2265, 0x012b, 0x0136, 0x2202, 0x2211, 
+       0x0142, 0x013b, 0x013c, 0x013d, 0x013e, 0x0139, 0x013a, 0x0145, 
+       0x0146, 0x0143, 0x00ac, 0x221a, 0x0144, 0x0147, 0x0394, 0x00ab, 
+       0x00bb, 0x2026, 0x00a0, 0x0148, 0x0150, 0x00d5, 0x0151, 0x014c, 
+       0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25c6, 
+       0x014d, 0x0154, 0x0155, 0x0158, 0x2039, 0x203a, 0x0159, 0x0156, 
+       0x0157, 0x0160, 0x201a, 0x201e, 0x0161, 0x015a, 0x015b, 0x00c1, 
+       0x0164, 0x0165, 0x00cd, 0x017d, 0x017e, 0x016a, 0x00d3, 0x00d4, 
+       0x016b, 0x016e, 0x00da, 0x016f, 0x0170, 0x0171, 0x0172, 0x0173, 
+       0x00dd, 0x00fd, 0x0137, 0x017b, 0x0141, 0x017c, 0x0122, 0x02c7
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/msz_7795_3.h b/gpsbabel/cet/msz_7795_3.h
new file mode 100644 (file)
index 0000000..0034a41
--- /dev/null
@@ -0,0 +1,135 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "MSZ_7795.3" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef msz_7795_3_h
+#define msz_7795_3_h
+
+#define cet_cs_name_msz_7795_3 "MSZ_7795.3"
+
+const char *cet_cs_alias_msz_7795_3[] = 
+{
+       "MSZ_7795.3", "hu", "ISO646-HU", "iso-ir-86",
+       NULL
+};
+
+#define cet_ucs4_ofs_msz_7795_3 36
+#define cet_ucs4_cnt_msz_7795_3 92
+
+const int cet_ucs4_map_msz_7795_3[cet_ucs4_cnt_msz_7795_3] =
+{
+       0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 
+       0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 
+       0x003c, 0x003d, 0x003e, 0x003f, 0x00c1, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 
+       0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 
+       0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00c9, 
+       0x00d6, 0x00dc, 0x005e, 0x005f, 0x00e1, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 
+       0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 
+       0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00e9, 
+       0x00f6, 0x00fc, 0x02dd, 0x007f
+};
+
+#define cet_ucs4_to_msz_7795_3_ct 10
+
+const cet_ucs4_link_t cet_ucs4_to_msz_7795_3_links[cet_ucs4_to_msz_7795_3_ct] =
+{
+        {0x00a4, 0x24} /* sign */,
+        {0x00c1, 0x40} /* capital letter a with acute */,
+        {0x00c9, 0x5b} /* capital letter e with acute */,
+        {0x00d6, 0x5c} /* capital letter o with diaeresis */,
+        {0x00dc, 0x5d} /* capital letter u with diaeresis */,
+        {0x00e1, 0x60} /* small letter a with acute */,
+        {0x00e9, 0x7b} /* small letter e with acute */,
+        {0x00f6, 0x7c} /* small letter o with diaeresis */,
+        {0x00fc, 0x7d} /* small letter u with diaeresis */,
+        {0x02dd, 0x7e} /* acute accent */
+};
+
+/*
+#define cet_ucs4_to_msz_7795_3_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_msz_7795_3_extra[cet_ucs4_to_msz_7795_3_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_msz_7795_3 =   /* defined in cet.h */
+{      
+       cet_cs_name_msz_7795_3,         /* name of character set        */
+       cet_cs_alias_msz_7795_3,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_msz_7795_3,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_msz_7795_3,                /* first non standard character */
+       cet_ucs4_cnt_msz_7795_3,                /* number of values in table    */
+
+       cet_ucs4_to_msz_7795_3_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_msz_7795_3_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int msz_7795_3_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x00c1, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c9, 0x00d6, 0x00dc, 0x005e, 0x005f, 
+       0x00e1, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e9, 0x00f6, 0x00fc, 0x02dd, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/nats_dano.h b/gpsbabel/cet/nats_dano.h
new file mode 100644 (file)
index 0000000..beb3433
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "NATS-DANO" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef nats_dano_h
+#define nats_dano_h
+
+#define cet_cs_name_nats_dano "NATS-DANO"
+
+const char *cet_cs_alias_nats_dano[] = 
+{
+       "NATS-DANO", "iso-ir-9-1", NULL
+};
+
+#define cet_ucs4_ofs_nats_dano 34
+#define cet_ucs4_cnt_nats_dano 94
+
+const int cet_ucs4_map_nats_dano[cet_ucs4_cnt_nats_dano] =
+{
+       0x00ab, 0x00bb, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 
+       0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 
+       0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 
+       0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0xe018, 0x0041, 
+       0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 
+       0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 
+       0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 
+       0x005a, 0x00c6, 0x00d8, 0x00c5, 0x25a0, 0x005f, 0xe019, 0x0061, 
+       0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 
+       0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 
+       0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 
+       0x007a, 0x00e6, 0x00f8, 0x00e5, 0x2013, 0x007f
+};
+
+#define cet_ucs4_to_nats_dano_ct 12
+
+const cet_ucs4_link_t cet_ucs4_to_nats_dano_links[cet_ucs4_to_nats_dano_ct] =
+{
+        {0x00ab, 0x22} /* double angle quotation mark */,
+        {0x00bb, 0x23} /* double angle quotation mark */,
+        {0x00c5, 0x5d} /* capital letter a with ring above */,
+        {0x00c6, 0x5b} /* capital letter ae */,
+        {0x00d8, 0x5c} /* capital letter o with stroke */,
+        {0x00e5, 0x7d} /* small letter a with ring above */,
+        {0x00e6, 0x7b} /* small letter ae */,
+        {0x00f8, 0x7c} /* small letter o with stroke */,
+        {0x2013, 0x7e} /* dash */,
+        {0x25a0, 0x5e} /* square */,
+        {0xe018, 0x40} /* space a (iso-ir-8-1 064) */,
+        {0xe019, 0x60} /* space b (iso-ir-8-1 096) */
+};
+
+/*
+#define cet_ucs4_to_nats_dano_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_nats_dano_extra[cet_ucs4_to_nats_dano_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_nats_dano =    /* defined in cet.h */
+{      
+       cet_cs_name_nats_dano,          /* name of character set        */
+       cet_cs_alias_nats_dano,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_nats_dano,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_nats_dano,         /* first non standard character */
+       cet_ucs4_cnt_nats_dano,         /* number of values in table    */
+
+       cet_ucs4_to_nats_dano_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_nats_dano_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int nats_dano_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x00ab, 0x00bb, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0xe018, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c6, 0x00d8, 0x00c5, 0x25a0, 0x005f, 
+       0xe019, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e6, 0x00f8, 0x00e5, 0x2013, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/nats_sefi.h b/gpsbabel/cet/nats_sefi.h
new file mode 100644 (file)
index 0000000..93c0713
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "NATS-SEFI" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef nats_sefi_h
+#define nats_sefi_h
+
+#define cet_cs_name_nats_sefi "NATS-SEFI"
+
+const char *cet_cs_alias_nats_sefi[] = 
+{
+       "NATS-SEFI", "iso-ir-8-1", NULL
+};
+
+#define cet_ucs4_ofs_nats_sefi 64
+#define cet_ucs4_cnt_nats_sefi 64
+
+const int cet_ucs4_map_nats_sefi[cet_ucs4_cnt_nats_sefi] =
+{
+       0xe018, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c4, 0x00d6, 0x00c5, 0x25a0, 0x005f, 
+       0xe019, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e4, 0x00f6, 0x00e5, 0x2013, 0x007f
+};
+
+#define cet_ucs4_to_nats_sefi_ct 10
+
+const cet_ucs4_link_t cet_ucs4_to_nats_sefi_links[cet_ucs4_to_nats_sefi_ct] =
+{
+        {0x00c4, 0x5b} /* capital letter a with diaeresis */,
+        {0x00c5, 0x5d} /* capital letter a with ring above */,
+        {0x00d6, 0x5c} /* capital letter o with diaeresis */,
+        {0x00e4, 0x7b} /* small letter a with diaeresis */,
+        {0x00e5, 0x7d} /* small letter a with ring above */,
+        {0x00f6, 0x7c} /* small letter o with diaeresis */,
+        {0x2013, 0x7e} /* dash */,
+        {0x25a0, 0x5e} /* square */,
+        {0xe018, 0x40} /* space a (iso-ir-8-1 064) */,
+        {0xe019, 0x60} /* space b (iso-ir-8-1 096) */
+};
+
+/*
+#define cet_ucs4_to_nats_sefi_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_nats_sefi_extra[cet_ucs4_to_nats_sefi_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_nats_sefi =    /* defined in cet.h */
+{      
+       cet_cs_name_nats_sefi,          /* name of character set        */
+       cet_cs_alias_nats_sefi,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_nats_sefi,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_nats_sefi,         /* first non standard character */
+       cet_ucs4_cnt_nats_sefi,         /* number of values in table    */
+
+       cet_ucs4_to_nats_sefi_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_nats_sefi_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int nats_sefi_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0xe018, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c4, 0x00d6, 0x00c5, 0x25a0, 0x005f, 
+       0xe019, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e4, 0x00f6, 0x00e5, 0x2013, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/nc_nc00_10.h b/gpsbabel/cet/nc_nc00_10.h
new file mode 100644 (file)
index 0000000..256cc49
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "NC_NC00-10" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef nc_nc00_10_h
+#define nc_nc00_10_h
+
+#define cet_cs_name_nc_nc00_10 "NC_NC00-10"
+
+const char *cet_cs_alias_nc_nc00_10[] = 
+{
+       "NC_NC00-10", "cuba", "ISO646-CU", "iso-ir-151", 
+       "NC_NC00-10:81", NULL
+};
+
+#define cet_ucs4_ofs_nc_nc00_10 36
+#define cet_ucs4_cnt_nc_nc00_10 92
+
+const int cet_ucs4_map_nc_nc00_10[cet_ucs4_cnt_nc_nc00_10] =
+{
+       0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 
+       0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 
+       0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 
+       0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 
+       0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00a1, 
+       0x00d1, 0x005d, 0x00bf, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 
+       0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 
+       0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00b4, 
+       0x00f1, 0x005b, 0x00a8, 0x007f
+};
+
+#define cet_ucs4_to_nc_nc00_10_ct 8
+
+const cet_ucs4_link_t cet_ucs4_to_nc_nc00_10_links[cet_ucs4_to_nc_nc00_10_ct] =
+{
+        {0x005b, 0x7d} /* square bracket */,
+        {0x00a1, 0x5b} /* exclamation mark */,
+        {0x00a4, 0x24} /* sign */,
+        {0x00a8, 0x7e} /* diaeresis */,
+        {0x00b4, 0x7b} /* accent */,
+        {0x00bf, 0x5e} /* question mark */,
+        {0x00d1, 0x5c} /* capital letter n with tilde */,
+        {0x00f1, 0x7c} /* small letter n with tilde */
+};
+
+/*
+#define cet_ucs4_to_nc_nc00_10_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_nc_nc00_10_extra[cet_ucs4_to_nc_nc00_10_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_nc_nc00_10 =   /* defined in cet.h */
+{      
+       cet_cs_name_nc_nc00_10,         /* name of character set        */
+       cet_cs_alias_nc_nc00_10,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_nc_nc00_10,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_nc_nc00_10,                /* first non standard character */
+       cet_ucs4_cnt_nc_nc00_10,                /* number of values in table    */
+
+       cet_ucs4_to_nc_nc00_10_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_nc_nc00_10_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int nc_nc00_10_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00a1, 0x00d1, 0x005d, 0x00bf, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00b4, 0x00f1, 0x005b, 0x00a8, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/nextstep.h b/gpsbabel/cet/nextstep.h
new file mode 100644 (file)
index 0000000..f4e4a5d
--- /dev/null
@@ -0,0 +1,240 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "NeXTSTEP" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef nextstep_h
+#define nextstep_h
+
+#define cet_cs_name_nextstep "NeXTSTEP"
+
+const char *cet_cs_alias_nextstep[] = 
+{
+       "NeXTSTEP", "next", NULL
+};
+
+#define cet_ucs4_ofs_nextstep 128
+#define cet_ucs4_cnt_nextstep 126
+
+const int cet_ucs4_map_nextstep[cet_ucs4_cnt_nextstep] =
+{
+       0x00a0, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+       0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d9, 
+       0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00b5, 0x00d7, 0x00f7, 
+       0x00a9, 0x00a1, 0x00a2, 0x00a3, 0x2044, 0x00a5, 0x0192, 0x00a7, 
+       0x00a4,     -1, 0x201c, 0x00ab,     -1,     -1, 0xfb01, 0xfb02, 
+       0x00ae, 0x2013, 0x2020, 0x2021, 0x00b7, 0x00a6, 0x00b6, 0x2022, 
+           -1,     -1, 0x201d, 0x00bb, 0x2026, 0x2030, 0x00ac, 0x00bf, 
+       0x00b9, 0x02cb, 0x00b4, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 
+       0x00a8, 0x00b2, 0x02da, 0x00b8, 0x00b3, 0x02dd, 0x02db, 0x02c7, 
+       0x2014, 0x00b1, 0x00bc, 0x00bd, 0x00be, 0x00e0, 0x00e1, 0x00e2, 
+       0x00e3, 0x00e4, 0x00e5, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 
+       0x00ec, 0x00c6, 0x00ed, 0x00aa, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 
+       0x0141, 0x00d8, 0x0152, 0x00ba, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 
+       0x00f6, 0x00e6, 0x00f9, 0x00fa, 0x00fb, 0x0131, 0x00fc, 0x00fd, 
+       0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x00ff
+};
+
+#define cet_ucs4_to_nextstep_ct 112
+
+const cet_ucs4_link_t cet_ucs4_to_nextstep_links[cet_ucs4_to_nextstep_ct] =
+{
+        {0x00a0, 0x80} /* space */,
+        {0x00a4, 0xa8} /* sign */,
+        {0x00a6, 0xb5} /* bar */,
+        {0x00a8, 0xc8} /* diaeresis */,
+        {0x00a9, 0xa0} /* sign */,
+        {0x00aa, 0xe3} /* ordinal indicator */,
+        {0x00ac, 0xbe} /* sign */,
+        {0x00ae, 0xb0} /* sign */,
+        {0x00af, 0xc5} /* macron */,
+        {0x00b1, 0xd1} /* sign */,
+        {0x00b2, 0xc9} /* two */,
+        {0x00b3, 0xcc} /* three */,
+        {0x00b4, 0xc2} /* accent */,
+        {0x00b5, 0x9d} /* sign */,
+        {0x00b7, 0xb4} /* dot */,
+        {0x00b8, 0xcb} /* cedilla */,
+        {0x00b9, 0xc0} /* one */,
+        {0x00ba, 0xeb} /* ordinal indicator */,
+        {0x00bc, 0xd2} /* fraction one quarter */,
+        {0x00bd, 0xd3} /* fraction one half */,
+        {0x00be, 0xd4} /* fraction three quarters */,
+        {0x00c0, 0x81} /* capital letter a with grave */,
+        {0x00c1, 0x82} /* capital letter a with acute */,
+        {0x00c2, 0x83} /* capital letter a with circumflex */,
+        {0x00c3, 0x84} /* capital letter a with tilde */,
+        {0x00c4, 0x85} /* capital letter a with diaeresis */,
+        {0x00c5, 0x86} /* capital letter a with ring above */,
+        {0x00c6, 0xe1} /* capital letter ae */,
+        {0x00c7, 0x87} /* capital letter c with cedilla */,
+        {0x00c8, 0x88} /* capital letter e with grave */,
+        {0x00c9, 0x89} /* capital letter e with acute */,
+        {0x00ca, 0x8a} /* capital letter e with circumflex */,
+        {0x00cb, 0x8b} /* capital letter e with diaeresis */,
+        {0x00cc, 0x8c} /* capital letter i with grave */,
+        {0x00cd, 0x8d} /* capital letter i with acute */,
+        {0x00ce, 0x8e} /* capital letter i with circumflex */,
+        {0x00cf, 0x8f} /* capital letter i with diaeresis */,
+        {0x00d0, 0x90} /* capital letter eth (icelandic) */,
+        {0x00d1, 0x91} /* capital letter n with tilde */,
+        {0x00d2, 0x92} /* capital letter o with grave */,
+        {0x00d3, 0x93} /* capital letter o with acute */,
+        {0x00d4, 0x94} /* capital letter o with circumflex */,
+        {0x00d5, 0x95} /* capital letter o with tilde */,
+        {0x00d6, 0x96} /* capital letter o with diaeresis */,
+        {0x00d7, 0x9e} /* sign */,
+        {0x00d8, 0xe9} /* capital letter o with stroke */,
+        {0x00d9, 0x97} /* capital letter u with grave */,
+        {0x00da, 0x98} /* capital letter u with acute */,
+        {0x00db, 0x99} /* capital letter u with circumflex */,
+        {0x00dc, 0x9a} /* capital letter u with diaeresis */,
+        {0x00dd, 0x9b} /* capital letter y with acute */,
+        {0x00de, 0x9c} /* capital letter thorn (icelandic) */,
+        {0x00df, 0xfb} /* small letter sharp s (german) */,
+        {0x00e0, 0xd5} /* small letter a with grave */,
+        {0x00e1, 0xd6} /* small letter a with acute */,
+        {0x00e2, 0xd7} /* small letter a with circumflex */,
+        {0x00e3, 0xd8} /* small letter a with tilde */,
+        {0x00e4, 0xd9} /* small letter a with diaeresis */,
+        {0x00e5, 0xda} /* small letter a with ring above */,
+        {0x00e6, 0xf1} /* small letter ae */,
+        {0x00e7, 0xdb} /* small letter c with cedilla */,
+        {0x00e8, 0xdc} /* small letter e with grave */,
+        {0x00e9, 0xdd} /* small letter e with acute */,
+        {0x00ea, 0xde} /* small letter e with circumflex */,
+        {0x00eb, 0xdf} /* small letter e with diaeresis */,
+        {0x00ec, 0xe0} /* small letter i with grave */,
+        {0x00ed, 0xe2} /* small letter i with acute */,
+        {0x00ee, 0xe4} /* small letter i with circumflex */,
+        {0x00ef, 0xe5} /* small letter i with diaeresis */,
+        {0x00f0, 0xe6} /* small letter eth (icelandic) */,
+        {0x00f1, 0xe7} /* small letter n with tilde */,
+        {0x00f2, 0xec} /* small letter o with grave */,
+        {0x00f3, 0xed} /* small letter o with acute */,
+        {0x00f4, 0xee} /* small letter o with circumflex */,
+        {0x00f5, 0xef} /* small letter o with tilde */,
+        {0x00f6, 0xf0} /* small letter o with diaeresis */,
+        {0x00f7, 0x9f} /* sign */,
+        {0x00f8, 0xf9} /* small letter o with stroke */,
+        {0x00f9, 0xf2} /* small letter u with grave */,
+        {0x00fa, 0xf3} /* small letter u with acute */,
+        {0x00fb, 0xf4} /* small letter u with circumflex */,
+        {0x00fc, 0xf6} /* small letter u with diaeresis */,
+        {0x00fd, 0xf7} /* small letter y with acute */,
+        {0x00fe, 0xfc} /* small letter thorn (icelandic) */,
+        {0x00ff, 0xfd} /* small letter y with diaeresis */,
+        {0x0131, 0xf5} /* small letter i dotless */,
+        {0x0141, 0xe8} /* capital letter l with stroke */,
+        {0x0142, 0xf8} /* small letter l with stroke */,
+        {0x0152, 0xea} /* capital ligature oe */,
+        {0x0153, 0xfa} /* small ligature oe */,
+        {0x0192, 0xa6} /* minuscule latine f hameçon */,
+        {0x02c6, 0xc3} /* modificative accent circonflexe */,
+        {0x02c7, 0xcf} /* caron */,
+        {0x02cb, 0xc1} /* modificative accent grave */,
+        {0x02d8, 0xc6} /* breve */,
+        {0x02d9, 0xc7} /* above */,
+        {0x02da, 0xca} /* above */,
+        {0x02db, 0xce} /* ogonek */,
+        {0x02dc, 0xc4} /* tilde */,
+        {0x02dd, 0xcd} /* acute accent */,
+        {0x2013, 0xb1} /* dash */,
+        {0x2014, 0xd0} /* dash */,
+        {0x201c, 0xaa} /* double quotation mark */,
+        {0x201d, 0xba} /* double quotation mark */,
+        {0x2020, 0xb2} /* dagger */,
+        {0x2021, 0xb3} /* dagger */,
+        {0x2022, 0xb7} /* puce */,
+        {0x2026, 0xbc} /* horizontal ellipsis */,
+        {0x2030, 0xbd} /* mille sign */,
+        {0x2044, 0xa4} /* slash */,
+        {0xfb01, 0xae} /* small ligature fi */,
+        {0xfb02, 0xaf} /* small ligature fl */
+};
+
+/*
+#define cet_ucs4_to_nextstep_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_nextstep_extra[cet_ucs4_to_nextstep_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_nextstep =     /* defined in cet.h */
+{      
+       cet_cs_name_nextstep,           /* name of character set        */
+       cet_cs_alias_nextstep,          /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_nextstep,          /* char to UCS-4 value table    */
+       cet_ucs4_ofs_nextstep,          /* first non standard character */
+       cet_ucs4_cnt_nextstep,          /* number of values in table    */
+
+       cet_ucs4_to_nextstep_links,     /* UCS-4 to char links          */
+       cet_ucs4_to_nextstep_ct,                /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int nextstep_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00a0, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c7, 
+       0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 
+       0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d9, 
+       0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00b5, 0x00d7, 0x00f7, 
+       0x00a9, 0x00a1, 0x00a2, 0x00a3, 0x2044, 0x00a5, 0x0192, 0x00a7, 
+       0x00a4,     -1, 0x201c, 0x00ab,     -1,     -1, 0xfb01, 0xfb02, 
+       0x00ae, 0x2013, 0x2020, 0x2021, 0x00b7, 0x00a6, 0x00b6, 0x2022, 
+           -1,     -1, 0x201d, 0x00bb, 0x2026, 0x2030, 0x00ac, 0x00bf, 
+       0x00b9, 0x02cb, 0x00b4, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 
+       0x00a8, 0x00b2, 0x02da, 0x00b8, 0x00b3, 0x02dd, 0x02db, 0x02c7, 
+       0x2014, 0x00b1, 0x00bc, 0x00bd, 0x00be, 0x00e0, 0x00e1, 0x00e2, 
+       0x00e3, 0x00e4, 0x00e5, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 
+       0x00ec, 0x00c6, 0x00ed, 0x00aa, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 
+       0x0141, 0x00d8, 0x0152, 0x00ba, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 
+       0x00f6, 0x00e6, 0x00f9, 0x00fa, 0x00fb, 0x0131, 0x00fc, 0x00fd, 
+       0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x00ff,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/nf_z_62_010.h b/gpsbabel/cet/nf_z_62_010.h
new file mode 100644 (file)
index 0000000..97a0cea
--- /dev/null
@@ -0,0 +1,135 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "NF_Z_62-010" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef nf_z_62_010_h
+#define nf_z_62_010_h
+
+#define cet_cs_name_nf_z_62_010 "NF_Z_62-010"
+
+const char *cet_cs_alias_nf_z_62_010[] = 
+{
+       "NF_Z_62-010", "fr", "ISO646-FR", "iso-ir-69",
+       NULL
+};
+
+#define cet_ucs4_ofs_nf_z_62_010 35
+#define cet_ucs4_cnt_nf_z_62_010 93
+
+const int cet_ucs4_map_nf_z_62_010[cet_ucs4_cnt_nf_z_62_010] =
+{
+       0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 
+       0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 
+       0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 
+       0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x00e0, 0x0041, 0x0042, 
+       0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 
+       0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 
+       0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 
+       0x00b0, 0x00e7, 0x00a7, 0x005e, 0x005f, 0x00b5, 0x0061, 0x0062, 
+       0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 
+       0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 
+       0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 
+       0x00e9, 0x00f9, 0x00e8, 0x00a8, 0x007f
+};
+
+#define cet_ucs4_to_nf_z_62_010_ct 10
+
+const cet_ucs4_link_t cet_ucs4_to_nf_z_62_010_links[cet_ucs4_to_nf_z_62_010_ct] =
+{
+        {0x00a3, 0x23} /* sign */,
+        {0x00a7, 0x5d} /* sign */,
+        {0x00a8, 0x7e} /* diaeresis */,
+        {0x00b0, 0x5b} /* sign */,
+        {0x00b5, 0x60} /* sign */,
+        {0x00e0, 0x40} /* small letter a with grave */,
+        {0x00e7, 0x5c} /* small letter c with cedilla */,
+        {0x00e8, 0x7d} /* small letter e with grave */,
+        {0x00e9, 0x7b} /* small letter e with acute */,
+        {0x00f9, 0x7c} /* small letter u with grave */
+};
+
+/*
+#define cet_ucs4_to_nf_z_62_010_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_nf_z_62_010_extra[cet_ucs4_to_nf_z_62_010_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_nf_z_62_010 =  /* defined in cet.h */
+{      
+       cet_cs_name_nf_z_62_010,                /* name of character set        */
+       cet_cs_alias_nf_z_62_010,               /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_nf_z_62_010,               /* char to UCS-4 value table    */
+       cet_ucs4_ofs_nf_z_62_010,               /* first non standard character */
+       cet_ucs4_cnt_nf_z_62_010,               /* number of values in table    */
+
+       cet_ucs4_to_nf_z_62_010_links,  /* UCS-4 to char links          */
+       cet_ucs4_to_nf_z_62_010_ct,             /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int nf_z_62_010_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00b0, 0x00e7, 0x00a7, 0x005e, 0x005f, 
+       0x00b5, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e9, 0x00f9, 0x00e8, 0x00a8, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/nf_z_62_010__1973_.h b/gpsbabel/cet/nf_z_62_010__1973_.h
new file mode 100644 (file)
index 0000000..b1b027c
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "NF_Z_62-010_(1973)" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef nf_z_62_010__1973__h
+#define nf_z_62_010__1973__h
+
+#define cet_cs_name_nf_z_62_010__1973_ "NF_Z_62-010_(1973)"
+
+const char *cet_cs_alias_nf_z_62_010__1973_[] = 
+{
+       "NF_Z_62-010_(1973)", "ISO646-FR1", "iso-ir-25", NULL
+};
+
+#define cet_ucs4_ofs_nf_z_62_010__1973_ 35
+#define cet_ucs4_cnt_nf_z_62_010__1973_ 93
+
+const int cet_ucs4_map_nf_z_62_010__1973_[cet_ucs4_cnt_nf_z_62_010__1973_] =
+{
+       0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 
+       0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 
+       0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 
+       0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x00e0, 0x0041, 0x0042, 
+       0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 
+       0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 
+       0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 
+       0x00b0, 0x00e7, 0x00a7, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 
+       0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 
+       0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 
+       0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 
+       0x00e9, 0x00f9, 0x00e8, 0x00a8, 0x007f
+};
+
+#define cet_ucs4_to_nf_z_62_010__1973__ct 9
+
+const cet_ucs4_link_t cet_ucs4_to_nf_z_62_010__1973__links[cet_ucs4_to_nf_z_62_010__1973__ct] =
+{
+        {0x00a3, 0x23} /* sign */,
+        {0x00a7, 0x5d} /* sign */,
+        {0x00a8, 0x7e} /* diaeresis */,
+        {0x00b0, 0x5b} /* sign */,
+        {0x00e0, 0x40} /* small letter a with grave */,
+        {0x00e7, 0x5c} /* small letter c with cedilla */,
+        {0x00e8, 0x7d} /* small letter e with grave */,
+        {0x00e9, 0x7b} /* small letter e with acute */,
+        {0x00f9, 0x7c} /* small letter u with grave */
+};
+
+/*
+#define cet_ucs4_to_nf_z_62_010__1973__extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_nf_z_62_010__1973__extra[cet_ucs4_to_nf_z_62_010__1973__extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_nf_z_62_010__1973_ =   /* defined in cet.h */
+{      
+       cet_cs_name_nf_z_62_010__1973_,         /* name of character set        */
+       cet_cs_alias_nf_z_62_010__1973_,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_nf_z_62_010__1973_,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_nf_z_62_010__1973_,                /* first non standard character */
+       cet_ucs4_cnt_nf_z_62_010__1973_,                /* number of values in table    */
+
+       cet_ucs4_to_nf_z_62_010__1973__links,   /* UCS-4 to char links          */
+       cet_ucs4_to_nf_z_62_010__1973__ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int nf_z_62_010__1973__ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00b0, 0x00e7, 0x00a7, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e9, 0x00f9, 0x00e8, 0x00a8, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ns_4551_1.h b/gpsbabel/cet/ns_4551_1.h
new file mode 100644 (file)
index 0000000..edad059
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "NS_4551-1" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ns_4551_1_h
+#define ns_4551_1_h
+
+#define cet_cs_name_ns_4551_1 "NS_4551-1"
+
+const char *cet_cs_alias_ns_4551_1[] = 
+{
+       "NS_4551-1", "ISO646-NO", "iso-ir-60", "no",
+       NULL
+};
+
+#define cet_ucs4_ofs_ns_4551_1 91
+#define cet_ucs4_cnt_ns_4551_1 37
+
+const int cet_ucs4_map_ns_4551_1[cet_ucs4_cnt_ns_4551_1] =
+{
+       0x00c6, 0x00d8, 0x00c5, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 
+       0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 
+       0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 
+       0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 
+       0x00e6, 0x00f8, 0x00e5, 0x203e, 0x007f
+};
+
+#define cet_ucs4_to_ns_4551_1_ct 7
+
+const cet_ucs4_link_t cet_ucs4_to_ns_4551_1_links[cet_ucs4_to_ns_4551_1_ct] =
+{
+        {0x00c5, 0x5d} /* capital letter a with ring above */,
+        {0x00c6, 0x5b} /* capital letter ae */,
+        {0x00d8, 0x5c} /* capital letter o with stroke */,
+        {0x00e5, 0x7d} /* small letter a with ring above */,
+        {0x00e6, 0x7b} /* small letter ae */,
+        {0x00f8, 0x7c} /* small letter o with stroke */,
+        {0x203e, 0x7e} /* overline */
+};
+
+/*
+#define cet_ucs4_to_ns_4551_1_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ns_4551_1_extra[cet_ucs4_to_ns_4551_1_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ns_4551_1 =    /* defined in cet.h */
+{      
+       cet_cs_name_ns_4551_1,          /* name of character set        */
+       cet_cs_alias_ns_4551_1,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ns_4551_1,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ns_4551_1,         /* first non standard character */
+       cet_ucs4_cnt_ns_4551_1,         /* number of values in table    */
+
+       cet_ucs4_to_ns_4551_1_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_ns_4551_1_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ns_4551_1_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c6, 0x00d8, 0x00c5, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e6, 0x00f8, 0x00e5, 0x203e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/ns_4551_2.h b/gpsbabel/cet/ns_4551_2.h
new file mode 100644 (file)
index 0000000..9b21e20
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "NS_4551-2" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef ns_4551_2_h
+#define ns_4551_2_h
+
+#define cet_cs_name_ns_4551_2 "NS_4551-2"
+
+const char *cet_cs_alias_ns_4551_2[] = 
+{
+       "NS_4551-2", "ISO646-NO2", "iso-ir-61", "no2",
+       NULL
+};
+
+#define cet_ucs4_ofs_ns_4551_2 35
+#define cet_ucs4_cnt_ns_4551_2 93
+
+const int cet_ucs4_map_ns_4551_2[cet_ucs4_cnt_ns_4551_2] =
+{
+       0x00a7, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 
+       0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 
+       0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 
+       0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 
+       0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 
+       0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 
+       0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 
+       0x00c6, 0x00d8, 0x00c5, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 
+       0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 
+       0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 
+       0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 
+       0x00e6, 0x00f8, 0x00e5, 0x007c, 0x007f
+};
+
+#define cet_ucs4_to_ns_4551_2_ct 8
+
+const cet_ucs4_link_t cet_ucs4_to_ns_4551_2_links[cet_ucs4_to_ns_4551_2_ct] =
+{
+        {0x007c, 0x7e} /* line */,
+        {0x00a7, 0x23} /* sign */,
+        {0x00c5, 0x5d} /* capital letter a with ring above */,
+        {0x00c6, 0x5b} /* capital letter ae */,
+        {0x00d8, 0x5c} /* capital letter o with stroke */,
+        {0x00e5, 0x7d} /* small letter a with ring above */,
+        {0x00e6, 0x7b} /* small letter ae */,
+        {0x00f8, 0x7c} /* small letter o with stroke */
+};
+
+/*
+#define cet_ucs4_to_ns_4551_2_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_ns_4551_2_extra[cet_ucs4_to_ns_4551_2_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_ns_4551_2 =    /* defined in cet.h */
+{      
+       cet_cs_name_ns_4551_2,          /* name of character set        */
+       cet_cs_alias_ns_4551_2,         /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_ns_4551_2,         /* char to UCS-4 value table    */
+       cet_ucs4_ofs_ns_4551_2,         /* first non standard character */
+       cet_ucs4_cnt_ns_4551_2,         /* number of values in table    */
+
+       cet_ucs4_to_ns_4551_2_links,    /* UCS-4 to char links          */
+       cet_ucs4_to_ns_4551_2_ct,               /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int ns_4551_2_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x00a7, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c6, 0x00d8, 0x00c5, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e6, 0x00f8, 0x00e5, 0x007c, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/pt.h b/gpsbabel/cet/pt.h
new file mode 100644 (file)
index 0000000..d664042
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "PT" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef pt_h
+#define pt_h
+
+#define cet_cs_name_pt "PT"
+
+const char *cet_cs_alias_pt[] = 
+{
+       "PT", "ISO646-PT", "iso-ir-16", NULL
+};
+
+#define cet_ucs4_ofs_pt 64
+#define cet_ucs4_cnt_pt 64
+
+const int cet_ucs4_map_pt[cet_ucs4_cnt_pt] =
+{
+       0x00a7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c3, 0x00c7, 0x00d5, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e3, 0x00e7, 0x00f5, 0x00b0, 0x007f
+};
+
+#define cet_ucs4_to_pt_ct 8
+
+const cet_ucs4_link_t cet_ucs4_to_pt_links[cet_ucs4_to_pt_ct] =
+{
+        {0x00a7, 0x40} /* sign */,
+        {0x00b0, 0x7e} /* sign */,
+        {0x00c3, 0x5b} /* capital letter a with tilde */,
+        {0x00c7, 0x5c} /* capital letter c with cedilla */,
+        {0x00d5, 0x5d} /* capital letter o with tilde */,
+        {0x00e3, 0x7b} /* small letter a with tilde */,
+        {0x00e7, 0x7c} /* small letter c with cedilla */,
+        {0x00f5, 0x7d} /* small letter o with tilde */
+};
+
+/*
+#define cet_ucs4_to_pt_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_pt_extra[cet_ucs4_to_pt_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_pt =   /* defined in cet.h */
+{      
+       cet_cs_name_pt,         /* name of character set        */
+       cet_cs_alias_pt,                /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_pt,                /* char to UCS-4 value table    */
+       cet_ucs4_ofs_pt,                /* first non standard character */
+       cet_ucs4_cnt_pt,                /* number of values in table    */
+
+       cet_ucs4_to_pt_links,   /* UCS-4 to char links          */
+       cet_ucs4_to_pt_ct,              /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int pt_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x00a7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c3, 0x00c7, 0x00d5, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e3, 0x00e7, 0x00f5, 0x00b0, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/pt2.h b/gpsbabel/cet/pt2.h
new file mode 100644 (file)
index 0000000..fcbb01c
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "PT2" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef pt2_h
+#define pt2_h
+
+#define cet_cs_name_pt2 "PT2"
+
+const char *cet_cs_alias_pt2[] = 
+{
+       "PT2", "ISO646-PT2", "iso-ir-84", NULL
+};
+
+#define cet_ucs4_ofs_pt2 64
+#define cet_ucs4_cnt_pt2 64
+
+const int cet_ucs4_map_pt2[cet_ucs4_cnt_pt2] =
+{
+       0x00b4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c3, 0x00c7, 0x00d5, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e3, 0x00e7, 0x00f5, 0x007e, 0x007f
+};
+
+#define cet_ucs4_to_pt2_ct 7
+
+const cet_ucs4_link_t cet_ucs4_to_pt2_links[cet_ucs4_to_pt2_ct] =
+{
+        {0x00b4, 0x40} /* accent */,
+        {0x00c3, 0x5b} /* capital letter a with tilde */,
+        {0x00c7, 0x5c} /* capital letter c with cedilla */,
+        {0x00d5, 0x5d} /* capital letter o with tilde */,
+        {0x00e3, 0x7b} /* small letter a with tilde */,
+        {0x00e7, 0x7c} /* small letter c with cedilla */,
+        {0x00f5, 0x7d} /* small letter o with tilde */
+};
+
+/*
+#define cet_ucs4_to_pt2_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_pt2_extra[cet_ucs4_to_pt2_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_pt2 =  /* defined in cet.h */
+{      
+       cet_cs_name_pt2,                /* name of character set        */
+       cet_cs_alias_pt2,               /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_pt2,               /* char to UCS-4 value table    */
+       cet_ucs4_ofs_pt2,               /* first non standard character */
+       cet_ucs4_cnt_pt2,               /* number of values in table    */
+
+       cet_ucs4_to_pt2_links,  /* UCS-4 to char links          */
+       cet_ucs4_to_pt2_ct,             /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int pt2_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x00b4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c3, 0x00c7, 0x00d5, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e3, 0x00e7, 0x00f5, 0x007e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/sami.h b/gpsbabel/cet/sami.h
new file mode 100644 (file)
index 0000000..4dfce17
--- /dev/null
@@ -0,0 +1,157 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "sami" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef sami_h
+#define sami_h
+
+#define cet_cs_name_sami "sami"
+
+const char *cet_cs_alias_sami[] = 
+{
+       "sami", "iso-ir-158", "lap", "latin-lap",
+       NULL
+};
+
+#define cet_ucs4_ofs_sami 160
+#define cet_ucs4_cnt_sami 80
+
+const int cet_ucs4_map_sami[cet_ucs4_cnt_sami] =
+{
+       0x00b4,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+       0x02bb,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+       0x0102, 0x00c0, 0x01de, 0x01e0, 0x01e2, 0x0114, 0x00c8, 0x01e4, 
+       0x01e6, 0x01e8, 0x014e, 0x00d2, 0x01ea, 0x01ec, 0x01b7, 0x01ee, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+       0x0103, 0x00e0, 0x01df, 0x01e1, 0x01e3, 0x0115, 0x00e8, 0x01e5, 
+       0x01e7, 0x01e9, 0x014f, 0x00f2, 0x01eb, 0x01ed, 0x0292, 0x01ef
+};
+
+#define cet_ucs4_to_sami_ct 34
+
+const cet_ucs4_link_t cet_ucs4_to_sami_links[cet_ucs4_to_sami_ct] =
+{
+        {0x00b4, 0xa0} /* accent */,
+        {0x00c0, 0xc1} /* capital letter a with grave */,
+        {0x00c8, 0xc6} /* capital letter e with grave */,
+        {0x00d2, 0xcb} /* capital letter o with grave */,
+        {0x00e0, 0xe1} /* small letter a with grave */,
+        {0x00e8, 0xe6} /* small letter e with grave */,
+        {0x00f2, 0xeb} /* small letter o with grave */,
+        {0x0102, 0xc0} /* capital letter a with breve */,
+        {0x0103, 0xe0} /* small letter a with breve */,
+        {0x0114, 0xc5} /* capital letter e with breve */,
+        {0x0115, 0xe5} /* small letter e with breve */,
+        {0x014e, 0xca} /* capital letter o with breve */,
+        {0x014f, 0xea} /* small letter o with breve */,
+        {0x01b7, 0xce} /* capital letter ezh */,
+        {0x01de, 0xc2} /* capital letter a with diaeresis and macron */,
+        {0x01df, 0xe2} /* small letter a with diaeresis and macron */,
+        {0x01e0, 0xc3} /* capital letter a with dot above and macron */,
+        {0x01e1, 0xe3} /* small letter a with dot above and macron */,
+        {0x01e2, 0xc4} /* capital letter ae with macron */,
+        {0x01e3, 0xe4} /* small letter ae with macron */,
+        {0x01e4, 0xc7} /* capital letter g with stroke */,
+        {0x01e5, 0xe7} /* small letter g with stroke */,
+        {0x01e6, 0xc8} /* capital letter g with caron */,
+        {0x01e7, 0xe8} /* small letter g with caron */,
+        {0x01e8, 0xc9} /* capital letter k with caron */,
+        {0x01e9, 0xe9} /* small letter k with caron */,
+        {0x01ea, 0xcc} /* capital letter o with ogonek */,
+        {0x01eb, 0xec} /* small letter o with ogonek */,
+        {0x01ec, 0xcd} /* capital letter o with ogonek and macron */,
+        {0x01ed, 0xed} /* small letter o with ogonek and macron */,
+        {0x01ee, 0xcf} /* capital letter ezh with caron */,
+        {0x01ef, 0xef} /* small letter ezh with caron */,
+        {0x0292, 0xee} /* small letter ezh (iso-ir-158 142) */,
+        {0x02bb, 0xb0} /* letter left half ring */
+};
+
+/*
+#define cet_ucs4_to_sami_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_sami_extra[cet_ucs4_to_sami_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_sami = /* defined in cet.h */
+{      
+       cet_cs_name_sami,               /* name of character set        */
+       cet_cs_alias_sami,              /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_sami,              /* char to UCS-4 value table    */
+       cet_ucs4_ofs_sami,              /* first non standard character */
+       cet_ucs4_cnt_sami,              /* number of values in table    */
+
+       cet_ucs4_to_sami_links, /* UCS-4 to char links          */
+       cet_ucs4_to_sami_ct,            /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int sami_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 
+       0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 
+       0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 
+       0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 
+       0x00b4,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+       0x02bb,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+       0x0102, 0x00c0, 0x01de, 0x01e0, 0x01e2, 0x0114, 0x00c8, 0x01e4, 
+       0x01e6, 0x01e8, 0x014e, 0x00d2, 0x01ea, 0x01ec, 0x01b7, 0x01ee, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+       0x0103, 0x00e0, 0x01df, 0x01e1, 0x01e3, 0x0115, 0x00e8, 0x01e5, 
+       0x01e7, 0x01e9, 0x014f, 0x00f2, 0x01eb, 0x01ed, 0x0292, 0x01ef, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/sen_850200_b.h b/gpsbabel/cet/sen_850200_b.h
new file mode 100644 (file)
index 0000000..0c31231
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "SEN_850200_B" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef sen_850200_b_h
+#define sen_850200_b_h
+
+#define cet_cs_name_sen_850200_b "SEN_850200_B"
+
+const char *cet_cs_alias_sen_850200_b[] = 
+{
+       "SEN_850200_B", "FI", "ISO646-FI", "ISO646-SE", 
+       "iso-ir-10", "se", "SS636127", NULL
+};
+
+#define cet_ucs4_ofs_sen_850200_b 36
+#define cet_ucs4_cnt_sen_850200_b 92
+
+const int cet_ucs4_map_sen_850200_b[cet_ucs4_cnt_sen_850200_b] =
+{
+       0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 
+       0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 
+       0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 
+       0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 
+       0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00c4, 
+       0x00d6, 0x00c5, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 
+       0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 
+       0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00e4, 
+       0x00f6, 0x00e5, 0x203e, 0x007f
+};
+
+#define cet_ucs4_to_sen_850200_b_ct 8
+
+const cet_ucs4_link_t cet_ucs4_to_sen_850200_b_links[cet_ucs4_to_sen_850200_b_ct] =
+{
+        {0x00a4, 0x24} /* sign */,
+        {0x00c4, 0x5b} /* capital letter a with diaeresis */,
+        {0x00c5, 0x5d} /* capital letter a with ring above */,
+        {0x00d6, 0x5c} /* capital letter o with diaeresis */,
+        {0x00e4, 0x7b} /* small letter a with diaeresis */,
+        {0x00e5, 0x7d} /* small letter a with ring above */,
+        {0x00f6, 0x7c} /* small letter o with diaeresis */,
+        {0x203e, 0x7e} /* overline */
+};
+
+/*
+#define cet_ucs4_to_sen_850200_b_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_sen_850200_b_extra[cet_ucs4_to_sen_850200_b_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_sen_850200_b = /* defined in cet.h */
+{      
+       cet_cs_name_sen_850200_b,               /* name of character set        */
+       cet_cs_alias_sen_850200_b,              /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_sen_850200_b,              /* char to UCS-4 value table    */
+       cet_ucs4_ofs_sen_850200_b,              /* first non standard character */
+       cet_ucs4_cnt_sen_850200_b,              /* number of values in table    */
+
+       cet_ucs4_to_sen_850200_b_links, /* UCS-4 to char links          */
+       cet_ucs4_to_sen_850200_b_ct,            /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int sen_850200_b_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c4, 0x00d6, 0x00c5, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e4, 0x00f6, 0x00e5, 0x203e, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/sen_850200_c.h b/gpsbabel/cet/sen_850200_c.h
new file mode 100644 (file)
index 0000000..606157b
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "SEN_850200_C" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef sen_850200_c_h
+#define sen_850200_c_h
+
+#define cet_cs_name_sen_850200_c "SEN_850200_C"
+
+const char *cet_cs_alias_sen_850200_c[] = 
+{
+       "SEN_850200_C", "ISO646-SE2", "iso-ir-11", "se2",
+       NULL
+};
+
+#define cet_ucs4_ofs_sen_850200_c 36
+#define cet_ucs4_cnt_sen_850200_c 92
+
+const int cet_ucs4_map_sen_850200_c[cet_ucs4_cnt_sen_850200_c] =
+{
+       0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 
+       0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 
+       0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 
+       0x003c, 0x003d, 0x003e, 0x003f, 0x00c9, 0x0041, 0x0042, 0x0043, 
+       0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 
+       0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 
+       0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00c4, 
+       0x00d6, 0x00c5, 0x00dc, 0x005f, 0x00e9, 0x0061, 0x0062, 0x0063, 
+       0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 
+       0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 
+       0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00e4, 
+       0x00f6, 0x00e5, 0x00fc, 0x007f
+};
+
+#define cet_ucs4_to_sen_850200_c_ct 11
+
+const cet_ucs4_link_t cet_ucs4_to_sen_850200_c_links[cet_ucs4_to_sen_850200_c_ct] =
+{
+        {0x00a4, 0x24} /* sign */,
+        {0x00c4, 0x5b} /* capital letter a with diaeresis */,
+        {0x00c5, 0x5d} /* capital letter a with ring above */,
+        {0x00c9, 0x40} /* capital letter e with acute */,
+        {0x00d6, 0x5c} /* capital letter o with diaeresis */,
+        {0x00dc, 0x5e} /* capital letter u with diaeresis */,
+        {0x00e4, 0x7b} /* small letter a with diaeresis */,
+        {0x00e5, 0x7d} /* small letter a with ring above */,
+        {0x00e9, 0x60} /* small letter e with acute */,
+        {0x00f6, 0x7c} /* small letter o with diaeresis */,
+        {0x00fc, 0x7e} /* small letter u with diaeresis */
+};
+
+/*
+#define cet_ucs4_to_sen_850200_c_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_sen_850200_c_extra[cet_ucs4_to_sen_850200_c_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_sen_850200_c = /* defined in cet.h */
+{      
+       cet_cs_name_sen_850200_c,               /* name of character set        */
+       cet_cs_alias_sen_850200_c,              /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_sen_850200_c,              /* char to UCS-4 value table    */
+       cet_ucs4_ofs_sen_850200_c,              /* first non standard character */
+       cet_ucs4_cnt_sen_850200_c,              /* number of values in table    */
+
+       cet_ucs4_to_sen_850200_c_links, /* UCS-4 to char links          */
+       cet_ucs4_to_sen_850200_c_ct,            /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int sen_850200_c_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x00c9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x00c4, 0x00d6, 0x00c5, 0x00dc, 0x005f, 
+       0x00e9, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x00e4, 0x00f6, 0x00e5, 0x00fc, 0x007f, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1, 
+           -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/tcvn.h b/gpsbabel/cet/tcvn.h
new file mode 100644 (file)
index 0000000..894c0b0
--- /dev/null
@@ -0,0 +1,278 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "TCVN" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef tcvn_h
+#define tcvn_h
+
+#define cet_cs_name_tcvn "TCVN"
+
+const char *cet_cs_alias_tcvn[] = 
+{
+       "TCVN", "TCVN5712-1", "TCVN5712-1:1993", "TCVN-5712",
+       NULL
+};
+
+#define cet_ucs4_ofs_tcvn 1
+#define cet_ucs4_cnt_tcvn 255
+
+const int cet_ucs4_map_tcvn[cet_ucs4_cnt_tcvn] =
+{
+       0x00da, 0x1ee4, 0x0003, 0x1eea, 0x1eec, 0x1eee, 0x0007, 0x0008, 
+       0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 
+       0x1ee8, 0x1ef0, 0x1ef2, 0x1ef6, 0x1ef8, 0x00dd, 0x1ef4, 0x0018, 
+       0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 
+       0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 
+       0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 
+       0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 
+       0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 
+       0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 
+       0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 
+       0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 
+       0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 
+       0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 
+       0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 
+       0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 
+       0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c0, 
+       0x1ea2, 0x00c3, 0x00c1, 0x1ea0, 0x1eb6, 0x1eac, 0x00c8, 0x1eba, 
+       0x1ebc, 0x00c9, 0x1eb8, 0x1ec6, 0x00cc, 0x1ec8, 0x0128, 0x00cd, 
+       0x1eca, 0x00d2, 0x1ece, 0x00d5, 0x00d3, 0x1ecc, 0x1ed8, 0x1edc, 
+       0x1ede, 0x1ee0, 0x1eda, 0x1ee2, 0x00d9, 0x1ee6, 0x0168,     -1, 
+       0x0102, 0x00c2, 0x00ca, 0x00d4, 0x01a0, 0x01af, 0x0110, 0x0103, 
+       0x00e2, 0x00ea, 0x00f4, 0x01a1, 0x01b0, 0x0111, 0x1eb0,     -1, 
+           -1,     -1,     -1,     -1, 0x00e0, 0x1ea3, 0x00e3, 0x00e1, 
+       0x1ea1, 0x1eb2, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eaf, 0x1eb4, 0x1eae, 
+       0x1ea6, 0x1ea8, 0x1eaa, 0x1ea4, 0x1ec0, 0x1eb7, 0x1ea7, 0x1ea9, 
+       0x1eab, 0x1ea5, 0x1ead, 0x00e8, 0x1ec2, 0x1ebb, 0x1ebd, 0x00e9, 
+       0x1eb9, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ebf, 0x1ec7, 0x00ec, 0x1ec9, 
+       0x1ec4, 0x1ebe, 0x1ed2, 0x0129, 0x00ed, 0x1ecb, 0x00f2, 0x1ed4, 
+       0x1ecf, 0x00f5, 0x00f3, 0x1ecd, 0x1ed3, 0x1ed5, 0x1ed7, 0x1ed1, 
+       0x1ed9, 0x1edd, 0x1edf, 0x1ee1, 0x1edb, 0x1ee3, 0x00f9, 0x1ed6, 
+       0x1ee7, 0x0169, 0x00fa, 0x1ee5, 0x1eeb, 0x1eed, 0x1eef, 0x1ee9, 
+       0x1ef1, 0x1ef3, 0x1ef7, 0x1ef9, 0x00fd, 0x1ef5, 0x1ed0
+};
+
+#define cet_ucs4_to_tcvn_ct 133
+
+const cet_ucs4_link_t cet_ucs4_to_tcvn_links[cet_ucs4_to_tcvn_ct] =
+{
+        {0x00c0, 0x80} /* capital letter a with grave */,
+        {0x00c1, 0x83} /* capital letter a with acute */,
+        {0x00c2, 0xa2} /* capital letter a with circumflex */,
+        {0x00c3, 0x82} /* capital letter a with tilde */,
+        {0x00c8, 0x87} /* capital letter e with grave */,
+        {0x00c9, 0x8a} /* capital letter e with acute */,
+        {0x00ca, 0xa3} /* capital letter e with circumflex */,
+        {0x00cc, 0x8d} /* capital letter i with grave */,
+        {0x00cd, 0x90} /* capital letter i with acute */,
+        {0x00d2, 0x92} /* capital letter o with grave */,
+        {0x00d3, 0x95} /* capital letter o with acute */,
+        {0x00d4, 0xa4} /* capital letter o with circumflex */,
+        {0x00d5, 0x94} /* capital letter o with tilde */,
+        {0x00d9, 0x9d} /* capital letter u with grave */,
+        {0x00da, 0x01} /* capital letter u with acute */,
+        {0x00dd, 0x16} /* capital letter y with acute */,
+        {0x00e0, 0xb5} /* small letter a with grave */,
+        {0x00e1, 0xb8} /* small letter a with acute */,
+        {0x00e2, 0xa9} /* small letter a with circumflex */,
+        {0x00e3, 0xb7} /* small letter a with tilde */,
+        {0x00e8, 0xcc} /* small letter e with grave */,
+        {0x00e9, 0xd0} /* small letter e with acute */,
+        {0x00ea, 0xaa} /* small letter e with circumflex */,
+        {0x00ec, 0xd7} /* small letter i with grave */,
+        {0x00ed, 0xdd} /* small letter i with acute */,
+        {0x00f2, 0xdf} /* small letter o with grave */,
+        {0x00f3, 0xe3} /* small letter o with acute */,
+        {0x00f4, 0xab} /* small letter o with circumflex */,
+        {0x00f5, 0xe2} /* small letter o with tilde */,
+        {0x00f9, 0xef} /* small letter u with grave */,
+        {0x00fa, 0xf3} /* small letter u with acute */,
+        {0x0102, 0xa1} /* capital letter a with breve */,
+        {0x0103, 0xa8} /* small letter a with breve */,
+        {0x0110, 0xa7} /* capital letter d with stroke */,
+        {0x0111, 0xae} /* small letter d with stroke */,
+        {0x0128, 0x8f} /* capital letter i with tilde */,
+        {0x0129, 0xdc} /* small letter i with tilde */,
+        {0x0168, 0x9f} /* capital letter u with tilde */,
+        {0x0169, 0xf2} /* small letter u with tilde */,
+        {0x01a0, 0xa5} /* capital letter o with horn */,
+        {0x01a1, 0xac} /* small letter o with horn */,
+        {0x01af, 0xa6} /* capital letter u with horn */,
+        {0x01b0, 0xad} /* small letter u with horn */,
+        {0x1ea0, 0x84} /* capital letter a with dot below */,
+        {0x1ea1, 0xb9} /* small letter a with dot below */,
+        {0x1ea2, 0x81} /* capital letter a with hook above */,
+        {0x1ea3, 0xb6} /* small letter a with hook above */,
+        {0x1ea4, 0xc4} /* capital letter a with circumflex and acute */,
+        {0x1ea5, 0xca} /* small letter a with circumflex and acute */,
+        {0x1ea6, 0xc1} /* capital letter a with circumflex and grave */,
+        {0x1ea7, 0xc7} /* small letter a with circumflex and grave */,
+        {0x1ea8, 0xc2} /* capital letter a with circumflex and hook above */,
+        {0x1ea9, 0xc8} /* small letter a with circumflex and hook above */,
+        {0x1eaa, 0xc3} /* capital letter a with circumflex and tilde */,
+        {0x1eab, 0xc9} /* small letter a with circumflex and tilde */,
+        {0x1eac, 0x86} /* latine a accent circonflexe et point souscrit */,
+        {0x1ead, 0xcb} /* latine a accent circonflexe et point souscrit */,
+        {0x1eae, 0xc0} /* capital letter a with breve and acute */,
+        {0x1eaf, 0xbe} /* small letter a with breve and acute */,
+        {0x1eb0, 0xaf} /* capital letter a with breve and grave */,
+        {0x1eb1, 0xbb} /* small letter a with breve and grave */,
+        {0x1eb2, 0xba} /* capital letter a with breve and hook above */,
+        {0x1eb3, 0xbc} /* small letter a with breve and hook above */,
+        {0x1eb4, 0xbf} /* capital letter a with breve and tilde */,
+        {0x1eb5, 0xbd} /* small letter a with breve and tilde */,
+        {0x1eb6, 0x85} /* latine a brève et point souscrit */,
+        {0x1eb7, 0xc6} /* latine a brève et point souscrit */,
+        {0x1eb8, 0x8b} /* capital letter e with dot below */,
+        {0x1eb9, 0xd1} /* small letter e with dot below */,
+        {0x1eba, 0x88} /* capital letter e with hook above */,
+        {0x1ebb, 0xce} /* small letter e with hook above */,
+        {0x1ebc, 0x89} /* capital letter e with tilde */,
+        {0x1ebd, 0xcf} /* small letter e with tilde */,
+        {0x1ebe, 0xda} /* capital letter e with circumflex and acute */,
+        {0x1ebf, 0xd5} /* small letter e with circumflex and acute */,
+        {0x1ec0, 0xc5} /* capital letter e with circumflex and grave */,
+        {0x1ec1, 0xd2} /* small letter e with circumflex and grave */,
+        {0x1ec2, 0xcd} /* capital letter e with circumflex and hook above */,
+        {0x1ec3, 0xd3} /* small letter e with circumflex and hook above */,
+        {0x1ec4, 0xd9} /* capital letter e with circumflex and tilde */,
+        {0x1ec5, 0xd4} /* small letter e with circumflex and tilde */,
+        {0x1ec6, 0x8c} /* latine e accent circonflexe et point souscrit */,
+        {0x1ec7, 0xd6} /* latine e accent circonflexe et point souscrit */,
+        {0x1ec8, 0x8e} /* capital letter i with hook above */,
+        {0x1ec9, 0xd8} /* small letter i with hook above */,
+        {0x1eca, 0x91} /* capital letter i with dot below */,
+        {0x1ecb, 0xde} /* small letter i with dot below */,
+        {0x1ecc, 0x96} /* capital letter o with dot below */,
+        {0x1ecd, 0xe4} /* small letter o with dot below */,
+        {0x1ece, 0x93} /* capital letter o with hook above */,
+        {0x1ecf, 0xe1} /* small letter o with hook above */,
+        {0x1ed0, 0xff} /* capital letter o with circumflex and acute */,
+        {0x1ed1, 0xe8} /* small letter o with circumflex and acute */,
+        {0x1ed2, 0xdb} /* capital letter o with circumflex and grave */,
+        {0x1ed3, 0xe5} /* small letter o with circumflex and grave */,
+        {0x1ed4, 0xe0} /* capital letter o with circumflex and hook above */,
+        {0x1ed5, 0xe6} /* small letter o with circumflex and hook above */,
+        {0x1ed6, 0xf0} /* capital letter o with circumflex and tilde */,
+        {0x1ed7, 0xe7} /* small letter o with circumflex and tilde */,
+        {0x1ed8, 0x97} /* latine o accent circonflexe et point souscrit */,
+        {0x1ed9, 0xe9} /* latine o accent circonflexe et point souscrit */,
+        {0x1eda, 0x9b} /* capital letter o with horn and acute */,
+        {0x1edb, 0xed} /* small letter o with horn and acute */,
+        {0x1edc, 0x98} /* capital letter o with horn and grave */,
+        {0x1edd, 0xea} /* small letter o with horn and grave */,
+        {0x1ede, 0x99} /* capital letter o with horn and hook above */,
+        {0x1edf, 0xeb} /* small letter o with horn and hook above */,
+        {0x1ee0, 0x9a} /* capital letter o with horn and tilde */,
+        {0x1ee1, 0xec} /* small letter o with horn and tilde */,
+        {0x1ee2, 0x9c} /* latine o cornu point souscrit */,
+        {0x1ee3, 0xee} /* latine o cornu point souscrit */,
+        {0x1ee4, 0x02} /* capital letter u with dot below */,
+        {0x1ee5, 0xf4} /* small letter u with dot below */,
+        {0x1ee6, 0x9e} /* capital letter u with hook above */,
+        {0x1ee7, 0xf1} /* small letter u with hook above */,
+        {0x1ee8, 0x11} /* capital letter u with horn and acute */,
+        {0x1ee9, 0xf8} /* small letter u with horn and acute */,
+        {0x1eea, 0x04} /* capital letter u with horn and grave */,
+        {0x1eeb, 0xf5} /* small letter u with horn and grave */,
+        {0x1eec, 0x05} /* capital letter u with horn and hook above */,
+        {0x1eed, 0xf6} /* small letter u with horn and hook above */,
+        {0x1eee, 0x06} /* capital letter u with horn and tilde */,
+        {0x1eef, 0xf7} /* small letter u with horn and tilde */,
+        {0x1ef0, 0x12} /* latine u cornu point souscrit */,
+        {0x1ef1, 0xf9} /* latine u cornu point souscrit */,
+        {0x1ef2, 0x13} /* capital letter y with grave */,
+        {0x1ef3, 0xfa} /* small letter y with grave */,
+        {0x1ef4, 0x17} /* capital letter y with dot below */,
+        {0x1ef5, 0xfe} /* small letter y with dot below */,
+        {0x1ef6, 0x14} /* capital letter y with hook above */,
+        {0x1ef7, 0xfb} /* small letter y with hook above */,
+        {0x1ef8, 0x15} /* capital letter y with tilde */,
+        {0x1ef9, 0xfc} /* small letter y with tilde */
+};
+
+/*
+#define cet_ucs4_to_tcvn_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_tcvn_extra[cet_ucs4_to_tcvn_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_tcvn = /* defined in cet.h */
+{      
+       cet_cs_name_tcvn,               /* name of character set        */
+       cet_cs_alias_tcvn,              /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_tcvn,              /* char to UCS-4 value table    */
+       cet_ucs4_ofs_tcvn,              /* first non standard character */
+       cet_ucs4_cnt_tcvn,              /* number of values in table    */
+
+       cet_ucs4_to_tcvn_links, /* UCS-4 to char links          */
+       cet_ucs4_to_tcvn_ct,            /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int tcvn_ucs4_full_map[] =
+{
+       0x0000, 0x00da, 0x1ee4, 0x0003, 0x1eea, 0x1eec, 0x1eee, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x1ee8, 0x1ef0, 0x1ef2, 0x1ef6, 0x1ef8, 0x00dd, 0x1ef4, 
+       0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c0, 0x1ea2, 0x00c3, 0x00c1, 0x1ea0, 0x1eb6, 0x1eac, 0x00c8, 
+       0x1eba, 0x1ebc, 0x00c9, 0x1eb8, 0x1ec6, 0x00cc, 0x1ec8, 0x0128, 
+       0x00cd, 0x1eca, 0x00d2, 0x1ece, 0x00d5, 0x00d3, 0x1ecc, 0x1ed8, 
+       0x1edc, 0x1ede, 0x1ee0, 0x1eda, 0x1ee2, 0x00d9, 0x1ee6, 0x0168, 
+           -1, 0x0102, 0x00c2, 0x00ca, 0x00d4, 0x01a0, 0x01af, 0x0110, 
+       0x0103, 0x00e2, 0x00ea, 0x00f4, 0x01a1, 0x01b0, 0x0111, 0x1eb0, 
+           -1,     -1,     -1,     -1,     -1, 0x00e0, 0x1ea3, 0x00e3, 
+       0x00e1, 0x1ea1, 0x1eb2, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eaf, 0x1eb4, 
+       0x1eae, 0x1ea6, 0x1ea8, 0x1eaa, 0x1ea4, 0x1ec0, 0x1eb7, 0x1ea7, 
+       0x1ea9, 0x1eab, 0x1ea5, 0x1ead, 0x00e8, 0x1ec2, 0x1ebb, 0x1ebd, 
+       0x00e9, 0x1eb9, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ebf, 0x1ec7, 0x00ec, 
+       0x1ec9, 0x1ec4, 0x1ebe, 0x1ed2, 0x0129, 0x00ed, 0x1ecb, 0x00f2, 
+       0x1ed4, 0x1ecf, 0x00f5, 0x00f3, 0x1ecd, 0x1ed3, 0x1ed5, 0x1ed7, 
+       0x1ed1, 0x1ed9, 0x1edd, 0x1edf, 0x1ee1, 0x1edb, 0x1ee3, 0x00f9, 
+       0x1ed6, 0x1ee7, 0x0169, 0x00fa, 0x1ee5, 0x1eeb, 0x1eed, 0x1eef, 
+       0x1ee9, 0x1ef1, 0x1ef3, 0x1ef7, 0x1ef9, 0x00fd, 0x1ef5, 0x1ed0
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/viscii.h b/gpsbabel/cet/viscii.h
new file mode 100644 (file)
index 0000000..43dfbe3
--- /dev/null
@@ -0,0 +1,247 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "VISCII" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef viscii_h
+#define viscii_h
+
+#define cet_cs_name_viscii "VISCII"
+
+const char *cet_cs_alias_viscii[] = 
+{
+       "VISCII", "csVISCII", "VISCII1.1-1", NULL
+};
+
+#define cet_ucs4_ofs_viscii 2
+#define cet_ucs4_cnt_viscii 254
+
+const int cet_ucs4_map_viscii[cet_ucs4_cnt_viscii] =
+{
+       0x1eb2, 0x0003, 0x0004, 0x1eb4, 0x1eaa, 0x0007, 0x0008, 0x0009, 
+       0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 
+       0x0012, 0x0013, 0x1ef6, 0x0015, 0x0016, 0x0017, 0x0018, 0x1ef8, 
+       0x001a, 0x001b, 0x001c, 0x001d, 0x1ef4, 0x001f, 0x0020, 0x0021, 
+       0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 
+       0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 
+       0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 
+       0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 
+       0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 
+       0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 
+       0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 
+       0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 
+       0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 
+       0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 
+       0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 
+       0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x1ea0, 0x1eae, 
+       0x1eb0, 0x1eb6, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eac, 0x1ebc, 0x1eb8, 
+       0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ed0, 0x1ed2, 0x1ed4, 
+       0x1ed6, 0x1ed8, 0x1ee2, 0x1eda, 0x1edc, 0x1ede, 0x1eca, 0x1ece, 
+       0x1ecc, 0x1ec8, 0x1ee6, 0x0168, 0x1ee4, 0x1ef2, 0x00d5, 0x1eaf, 
+       0x1eb1, 0x1eb7, 0x1ea5, 0x1ea7, 0x1ea9, 0x1ead, 0x1ebd, 0x1eb9, 
+       0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ed1, 0x1ed3, 0x1ed5, 
+       0x1ed7, 0x1ee0, 0x01a0, 0x1ed9, 0x1edd, 0x1edf, 0x1ecb, 0x1ef0, 
+       0x1ee8, 0x1eea, 0x1eec, 0x01a1, 0x1edb, 0x01af, 0x00c0, 0x00c1, 
+       0x00c2, 0x00c3, 0x1ea2, 0x0102, 0x1eb3, 0x1eb5, 0x00c8, 0x00c9, 
+       0x00ca, 0x1eba, 0x00cc, 0x00cd, 0x0128, 0x1ef3, 0x0110, 0x1ee9, 
+       0x00d2, 0x00d3, 0x00d4, 0x1ea1, 0x1ef7, 0x1eeb, 0x1eed, 0x00d9, 
+       0x00da, 0x1ef9, 0x1ef5, 0x00dd, 0x1ee1, 0x01b0, 0x00e0, 0x00e1, 
+       0x00e2, 0x00e3, 0x1ea3, 0x0103, 0x1eef, 0x1eab, 0x00e8, 0x00e9, 
+       0x00ea, 0x1ebb, 0x00ec, 0x00ed, 0x0129, 0x1ec9, 0x0111, 0x1ef1, 
+       0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x1ecf, 0x1ecd, 0x1ee5, 0x00f9, 
+       0x00fa, 0x0169, 0x1ee7, 0x00fd, 0x1ee3, 0x1eee
+};
+
+#define cet_ucs4_to_viscii_ct 103
+
+const cet_ucs4_link_t cet_ucs4_to_viscii_links[cet_ucs4_to_viscii_ct] =
+{
+        {0x00d5, 0xa0} /* capital letter o with tilde */,
+        {0x0102, 0xc5} /* capital letter a with breve */,
+        {0x0103, 0xe5} /* small letter a with breve */,
+        {0x0110, 0xd0} /* capital letter d with stroke */,
+        {0x0111, 0xf0} /* small letter d with stroke */,
+        {0x0128, 0xce} /* capital letter i with tilde */,
+        {0x0129, 0xee} /* small letter i with tilde */,
+        {0x0168, 0x9d} /* capital letter u with tilde */,
+        {0x0169, 0xfb} /* small letter u with tilde */,
+        {0x01a0, 0xb4} /* capital letter o with horn */,
+        {0x01a1, 0xbd} /* small letter o with horn */,
+        {0x01af, 0xbf} /* capital letter u with horn */,
+        {0x01b0, 0xdf} /* small letter u with horn */,
+        {0x1ea0, 0x80} /* capital letter a with dot below */,
+        {0x1ea1, 0xd5} /* small letter a with dot below */,
+        {0x1ea2, 0xc4} /* capital letter a with hook above */,
+        {0x1ea3, 0xe4} /* small letter a with hook above */,
+        {0x1ea4, 0x84} /* capital letter a with circumflex and acute */,
+        {0x1ea5, 0xa4} /* small letter a with circumflex and acute */,
+        {0x1ea6, 0x85} /* capital letter a with circumflex and grave */,
+        {0x1ea7, 0xa5} /* small letter a with circumflex and grave */,
+        {0x1ea8, 0x86} /* capital letter a with circumflex and hook above */,
+        {0x1ea9, 0xa6} /* small letter a with circumflex and hook above */,
+        {0x1eaa, 0x06} /* capital letter a with circumflex and tilde */,
+        {0x1eab, 0xe7} /* small letter a with circumflex and tilde */,
+        {0x1eac, 0x87} /* latine a accent circonflexe et point souscrit */,
+        {0x1ead, 0xa7} /* latine a accent circonflexe et point souscrit */,
+        {0x1eae, 0x81} /* capital letter a with breve and acute */,
+        {0x1eaf, 0xa1} /* small letter a with breve and acute */,
+        {0x1eb0, 0x82} /* capital letter a with breve and grave */,
+        {0x1eb1, 0xa2} /* small letter a with breve and grave */,
+        {0x1eb2, 0x02} /* capital letter a with breve and hook above */,
+        {0x1eb3, 0xc6} /* small letter a with breve and hook above */,
+        {0x1eb4, 0x05} /* capital letter a with breve and tilde */,
+        {0x1eb5, 0xc7} /* small letter a with breve and tilde */,
+        {0x1eb6, 0x83} /* latine a brève et point souscrit */,
+        {0x1eb7, 0xa3} /* latine a brève et point souscrit */,
+        {0x1eb8, 0x89} /* capital letter e with dot below */,
+        {0x1eb9, 0xa9} /* small letter e with dot below */,
+        {0x1eba, 0xcb} /* capital letter e with hook above */,
+        {0x1ebb, 0xeb} /* small letter e with hook above */,
+        {0x1ebc, 0x88} /* capital letter e with tilde */,
+        {0x1ebd, 0xa8} /* small letter e with tilde */,
+        {0x1ebe, 0x8a} /* capital letter e with circumflex and acute */,
+        {0x1ebf, 0xaa} /* small letter e with circumflex and acute */,
+        {0x1ec0, 0x8b} /* capital letter e with circumflex and grave */,
+        {0x1ec1, 0xab} /* small letter e with circumflex and grave */,
+        {0x1ec2, 0x8c} /* capital letter e with circumflex and hook above */,
+        {0x1ec3, 0xac} /* small letter e with circumflex and hook above */,
+        {0x1ec4, 0x8d} /* capital letter e with circumflex and tilde */,
+        {0x1ec5, 0xad} /* small letter e with circumflex and tilde */,
+        {0x1ec6, 0x8e} /* latine e accent circonflexe et point souscrit */,
+        {0x1ec7, 0xae} /* latine e accent circonflexe et point souscrit */,
+        {0x1ec8, 0x9b} /* capital letter i with hook above */,
+        {0x1ec9, 0xef} /* small letter i with hook above */,
+        {0x1eca, 0x98} /* capital letter i with dot below */,
+        {0x1ecb, 0xb8} /* small letter i with dot below */,
+        {0x1ecc, 0x9a} /* capital letter o with dot below */,
+        {0x1ecd, 0xf7} /* small letter o with dot below */,
+        {0x1ece, 0x99} /* capital letter o with hook above */,
+        {0x1ecf, 0xf6} /* small letter o with hook above */,
+        {0x1ed0, 0x8f} /* capital letter o with circumflex and acute */,
+        {0x1ed1, 0xaf} /* small letter o with circumflex and acute */,
+        {0x1ed2, 0x90} /* capital letter o with circumflex and grave */,
+        {0x1ed3, 0xb0} /* small letter o with circumflex and grave */,
+        {0x1ed4, 0x91} /* capital letter o with circumflex and hook above */,
+        {0x1ed5, 0xb1} /* small letter o with circumflex and hook above */,
+        {0x1ed6, 0x92} /* capital letter o with circumflex and tilde */,
+        {0x1ed7, 0xb2} /* small letter o with circumflex and tilde */,
+        {0x1ed8, 0x93} /* latine o accent circonflexe et point souscrit */,
+        {0x1ed9, 0xb5} /* latine o accent circonflexe et point souscrit */,
+        {0x1eda, 0x95} /* capital letter o with horn and acute */,
+        {0x1edb, 0xbe} /* small letter o with horn and acute */,
+        {0x1edc, 0x96} /* capital letter o with horn and grave */,
+        {0x1edd, 0xb6} /* small letter o with horn and grave */,
+        {0x1ede, 0x97} /* capital letter o with horn and hook above */,
+        {0x1edf, 0xb7} /* small letter o with horn and hook above */,
+        {0x1ee0, 0xb3} /* capital letter o with horn and tilde */,
+        {0x1ee1, 0xde} /* small letter o with horn and tilde */,
+        {0x1ee2, 0x94} /* latine o cornu point souscrit */,
+        {0x1ee3, 0xfe} /* latine o cornu point souscrit */,
+        {0x1ee4, 0x9e} /* capital letter u with dot below */,
+        {0x1ee5, 0xf8} /* small letter u with dot below */,
+        {0x1ee6, 0x9c} /* capital letter u with hook above */,
+        {0x1ee7, 0xfc} /* small letter u with hook above */,
+        {0x1ee8, 0xba} /* capital letter u with horn and acute */,
+        {0x1ee9, 0xd1} /* small letter u with horn and acute */,
+        {0x1eea, 0xbb} /* capital letter u with horn and grave */,
+        {0x1eeb, 0xd7} /* small letter u with horn and grave */,
+        {0x1eec, 0xbc} /* capital letter u with horn and hook above */,
+        {0x1eed, 0xd8} /* small letter u with horn and hook above */,
+        {0x1eee, 0xff} /* capital letter u with horn and tilde */,
+        {0x1eef, 0xe6} /* small letter u with horn and tilde */,
+        {0x1ef0, 0xb9} /* latine u cornu point souscrit */,
+        {0x1ef1, 0xf1} /* latine u cornu point souscrit */,
+        {0x1ef2, 0x9f} /* capital letter y with grave */,
+        {0x1ef3, 0xcf} /* small letter y with grave */,
+        {0x1ef4, 0x1e} /* capital letter y with dot below */,
+        {0x1ef5, 0xdc} /* small letter y with dot below */,
+        {0x1ef6, 0x14} /* capital letter y with hook above */,
+        {0x1ef7, 0xd6} /* small letter y with hook above */,
+        {0x1ef8, 0x19} /* capital letter y with tilde */,
+        {0x1ef9, 0xdb} /* small letter y with tilde */
+};
+
+/*
+#define cet_ucs4_to_viscii_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_viscii_extra[cet_ucs4_to_viscii_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_viscii =       /* defined in cet.h */
+{      
+       cet_cs_name_viscii,             /* name of character set        */
+       cet_cs_alias_viscii,            /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_viscii,            /* char to UCS-4 value table    */
+       cet_ucs4_ofs_viscii,            /* first non standard character */
+       cet_ucs4_cnt_viscii,            /* number of values in table    */
+
+       cet_ucs4_to_viscii_links,       /* UCS-4 to char links          */
+       cet_ucs4_to_viscii_ct,          /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int viscii_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x1eb2, 0x0003, 0x0004, 0x1eb4, 0x1eaa, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x0010, 0x0011, 0x0012, 0x0013, 0x1ef6, 0x0015, 0x0016, 0x0017, 
+       0x0018, 0x1ef8, 0x001a, 0x001b, 0x001c, 0x001d, 0x1ef4, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x1ea0, 0x1eae, 0x1eb0, 0x1eb6, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eac, 
+       0x1ebc, 0x1eb8, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ed0, 
+       0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1ee2, 0x1eda, 0x1edc, 0x1ede, 
+       0x1eca, 0x1ece, 0x1ecc, 0x1ec8, 0x1ee6, 0x0168, 0x1ee4, 0x1ef2, 
+       0x00d5, 0x1eaf, 0x1eb1, 0x1eb7, 0x1ea5, 0x1ea7, 0x1ea9, 0x1ead, 
+       0x1ebd, 0x1eb9, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ed1, 
+       0x1ed3, 0x1ed5, 0x1ed7, 0x1ee0, 0x01a0, 0x1ed9, 0x1edd, 0x1edf, 
+       0x1ecb, 0x1ef0, 0x1ee8, 0x1eea, 0x1eec, 0x01a1, 0x1edb, 0x01af, 
+       0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x1ea2, 0x0102, 0x1eb3, 0x1eb5, 
+       0x00c8, 0x00c9, 0x00ca, 0x1eba, 0x00cc, 0x00cd, 0x0128, 0x1ef3, 
+       0x0110, 0x1ee9, 0x00d2, 0x00d3, 0x00d4, 0x1ea1, 0x1ef7, 0x1eeb, 
+       0x1eed, 0x00d9, 0x00da, 0x1ef9, 0x1ef5, 0x00dd, 0x1ee1, 0x01b0, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x1ea3, 0x0103, 0x1eef, 0x1eab, 
+       0x00e8, 0x00e9, 0x00ea, 0x1ebb, 0x00ec, 0x00ed, 0x0129, 0x1ec9, 
+       0x0111, 0x1ef1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x1ecf, 0x1ecd, 
+       0x1ee5, 0x00f9, 0x00fa, 0x0169, 0x1ee7, 0x00fd, 0x1ee3, 0x1eee
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet/vps.h b/gpsbabel/cet/vps.h
new file mode 100644 (file)
index 0000000..73bf86e
--- /dev/null
@@ -0,0 +1,255 @@
+/*
+
+    Data automatically generated from recode output:
+
+        'recode -lf "VPS" 2>/dev/null'
+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#ifndef vps_h
+#define vps_h
+
+#define cet_cs_name_vps "VPS"
+
+const char *cet_cs_alias_vps[] = 
+{
+       "VPS", NULL
+};
+
+#define cet_ucs4_ofs_vps 2
+#define cet_ucs4_cnt_vps 254
+
+const int cet_ucs4_map_vps[cet_ucs4_cnt_vps] =
+{
+       0x1ea0, 0x1eac, 0x1eb6, 0x1eb8, 0x1ec6, 0x0007, 0x0008, 0x0009, 
+       0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x1eca, 0x1ecc, 
+       0x1ed8, 0x1ee2, 0x1ee4, 0x1ef0, 0x0016, 0x0017, 0x0018, 0x1ef4, 
+       0x001a, 0x001b, 0x1eaa, 0x1eee, 0x001e, 0x001f, 0x0020, 0x0021, 
+       0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 
+       0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 
+       0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 
+       0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 
+       0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 
+       0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 
+       0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 
+       0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 
+       0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 
+       0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 
+       0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 
+       0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c0, 0x1ea2, 
+       0x00c3, 0x1ea4, 0x1ea6, 0x1ea8, 0x1ecd, 0x1ed7, 0x0102, 0x1ebf, 
+       0x1ec1, 0x1ec3, 0x1ec7, 0x1eae, 0x1eb0, 0x1eb2, 0x1ebe,     -1, 
+           -1, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ed0, 0x1ed2, 0x1ed4,     -1, 
+       0x00fd, 0x1ef7, 0x1ef5, 0x1eda, 0x1edc, 0x1ede,     -1, 0x1eaf, 
+       0x1eb1, 0x1eb3, 0x1eb5, 0x1eb7, 0x1ee0, 0x1edb, 0x00d9, 0x1edd, 
+       0x1edf, 0x1ee1, 0x0168, 0x1ee8, 0x1ee3, 0x1eea, 0x1ed5, 0x1eec, 
+       0x1ef2, 0x1ef8, 0x00cd, 0x00cc, 0x1ed9, 0x1ec8, 0x0128, 0x00d3, 
+       0x1eed, 0x1eef, 0x00d2, 0x1ece, 0x00d5, 0x1ef1, 0x1ea7, 0x00c1, 
+       0x00c2, 0x1ea5, 0x1ea9, 0x1eab, 0x1ead, 0x0111, 0x1ebb, 0x00c9, 
+       0x00ca, 0x1eb9, 0x1ec9, 0x1ec5, 0x1ecb, 0x1ef9, 0x01af, 0x1ee6, 
+       0x1ed3, 0x1ed1, 0x00d4, 0x1ecf, 0x01a1, 0x00c8, 0x1eeb, 0x1ee9, 
+       0x00da, 0x0169, 0x01b0, 0x00dd, 0x1eba,     -1, 0x00e0, 0x00e1, 
+       0x00e2, 0x00e3, 0x1ea3, 0x1ea1, 0x0103,     -1, 0x00e8, 0x00e9, 
+       0x00ea, 0x1ebd, 0x00ec, 0x00ed,     -1, 0x0129, 0x1eb4, 0x0110, 
+       0x00f2, 0x00f3, 0x00f4, 0x00f5,     -1, 0x01a0, 0x1ee5, 0x00f9, 
+       0x00fa, 0x1ee7,     -1, 0x1ef6, 0x1ebc, 0x1ef3
+};
+
+#define cet_ucs4_to_vps_ct 111
+
+const cet_ucs4_link_t cet_ucs4_to_vps_links[cet_ucs4_to_vps_ct] =
+{
+        {0x00c0, 0x80} /* capital letter a with grave */,
+        {0x00c3, 0x82} /* capital letter a with tilde */,
+        {0x00c8, 0xd7} /* capital letter e with grave */,
+        {0x00cc, 0xb5} /* capital letter i with grave */,
+        {0x00cd, 0xb4} /* capital letter i with acute */,
+        {0x00d2, 0xbc} /* capital letter o with grave */,
+        {0x00d3, 0xb9} /* capital letter o with acute */,
+        {0x00d5, 0xbe} /* capital letter o with tilde */,
+        {0x00d9, 0xa8} /* capital letter u with grave */,
+        {0x00fd, 0x9a} /* small letter y with acute */,
+        {0x0102, 0x88} /* capital letter a with breve */,
+        {0x0103, 0xe6} /* small letter a with breve */,
+        {0x0110, 0xf1} /* capital letter d with stroke */,
+        {0x0111, 0xc7} /* small letter d with stroke */,
+        {0x0128, 0xb8} /* capital letter i with tilde */,
+        {0x0129, 0xef} /* small letter i with tilde */,
+        {0x0168, 0xac} /* capital letter u with tilde */,
+        {0x0169, 0xdb} /* small letter u with tilde */,
+        {0x01a0, 0xf7} /* capital letter o with horn */,
+        {0x01a1, 0xd6} /* small letter o with horn */,
+        {0x01af, 0xd0} /* capital letter u with horn */,
+        {0x01b0, 0xdc} /* small letter u with horn */,
+        {0x1ea0, 0x02} /* capital letter a with dot below */,
+        {0x1ea1, 0xe5} /* small letter a with dot below */,
+        {0x1ea2, 0x81} /* capital letter a with hook above */,
+        {0x1ea3, 0xe4} /* small letter a with hook above */,
+        {0x1ea4, 0x83} /* capital letter a with circumflex and acute */,
+        {0x1ea5, 0xc3} /* small letter a with circumflex and acute */,
+        {0x1ea6, 0x84} /* capital letter a with circumflex and grave */,
+        {0x1ea7, 0xc0} /* small letter a with circumflex and grave */,
+        {0x1ea8, 0x85} /* capital letter a with circumflex and hook above */,
+        {0x1ea9, 0xc4} /* small letter a with circumflex and hook above */,
+        {0x1eaa, 0x1c} /* capital letter a with circumflex and tilde */,
+        {0x1eab, 0xc5} /* small letter a with circumflex and tilde */,
+        {0x1eac, 0x03} /* latine a accent circonflexe et point souscrit */,
+        {0x1ead, 0xc6} /* latine a accent circonflexe et point souscrit */,
+        {0x1eae, 0x8d} /* capital letter a with breve and acute */,
+        {0x1eaf, 0xa1} /* small letter a with breve and acute */,
+        {0x1eb0, 0x8e} /* capital letter a with breve and grave */,
+        {0x1eb1, 0xa2} /* small letter a with breve and grave */,
+        {0x1eb2, 0x8f} /* capital letter a with breve and hook above */,
+        {0x1eb3, 0xa3} /* small letter a with breve and hook above */,
+        {0x1eb4, 0xf0} /* capital letter a with breve and tilde */,
+        {0x1eb5, 0xa4} /* small letter a with breve and tilde */,
+        {0x1eb6, 0x04} /* latine a brève et point souscrit */,
+        {0x1eb7, 0xa5} /* latine a brève et point souscrit */,
+        {0x1eb8, 0x05} /* capital letter e with dot below */,
+        {0x1eb9, 0xcb} /* small letter e with dot below */,
+        {0x1eba, 0xde} /* capital letter e with hook above */,
+        {0x1ebb, 0xc8} /* small letter e with hook above */,
+        {0x1ebc, 0xfe} /* capital letter e with tilde */,
+        {0x1ebd, 0xeb} /* small letter e with tilde */,
+        {0x1ebe, 0x90} /* capital letter e with circumflex and acute */,
+        {0x1ebf, 0x89} /* small letter e with circumflex and acute */,
+        {0x1ec0, 0x93} /* capital letter e with circumflex and grave */,
+        {0x1ec1, 0x8a} /* small letter e with circumflex and grave */,
+        {0x1ec2, 0x94} /* capital letter e with circumflex and hook above */,
+        {0x1ec3, 0x8b} /* small letter e with circumflex and hook above */,
+        {0x1ec4, 0x95} /* capital letter e with circumflex and tilde */,
+        {0x1ec5, 0xcd} /* small letter e with circumflex and tilde */,
+        {0x1ec6, 0x06} /* latine e accent circonflexe et point souscrit */,
+        {0x1ec7, 0x8c} /* latine e accent circonflexe et point souscrit */,
+        {0x1ec8, 0xb7} /* capital letter i with hook above */,
+        {0x1ec9, 0xcc} /* small letter i with hook above */,
+        {0x1eca, 0x10} /* capital letter i with dot below */,
+        {0x1ecb, 0xce} /* small letter i with dot below */,
+        {0x1ecc, 0x11} /* capital letter o with dot below */,
+        {0x1ecd, 0x86} /* small letter o with dot below */,
+        {0x1ece, 0xbd} /* capital letter o with hook above */,
+        {0x1ecf, 0xd5} /* small letter o with hook above */,
+        {0x1ed0, 0x96} /* capital letter o with circumflex and acute */,
+        {0x1ed1, 0xd3} /* small letter o with circumflex and acute */,
+        {0x1ed2, 0x97} /* capital letter o with circumflex and grave */,
+        {0x1ed3, 0xd2} /* small letter o with circumflex and grave */,
+        {0x1ed4, 0x98} /* capital letter o with circumflex and hook above */,
+        {0x1ed5, 0xb0} /* small letter o with circumflex and hook above */,
+        {0x1ed7, 0x87} /* small letter o with circumflex and tilde */,
+        {0x1ed8, 0x12} /* latine o accent circonflexe et point souscrit */,
+        {0x1ed9, 0xb6} /* latine o accent circonflexe et point souscrit */,
+        {0x1eda, 0x9d} /* capital letter o with horn and acute */,
+        {0x1edb, 0xa7} /* small letter o with horn and acute */,
+        {0x1edc, 0x9e} /* capital letter o with horn and grave */,
+        {0x1edd, 0xa9} /* small letter o with horn and grave */,
+        {0x1ede, 0x9f} /* capital letter o with horn and hook above */,
+        {0x1edf, 0xaa} /* small letter o with horn and hook above */,
+        {0x1ee0, 0xa6} /* capital letter o with horn and tilde */,
+        {0x1ee1, 0xab} /* small letter o with horn and tilde */,
+        {0x1ee2, 0x13} /* latine o cornu point souscrit */,
+        {0x1ee3, 0xae} /* latine o cornu point souscrit */,
+        {0x1ee4, 0x14} /* capital letter u with dot below */,
+        {0x1ee5, 0xf8} /* small letter u with dot below */,
+        {0x1ee6, 0xd1} /* capital letter u with hook above */,
+        {0x1ee7, 0xfb} /* small letter u with hook above */,
+        {0x1ee8, 0xad} /* capital letter u with horn and acute */,
+        {0x1ee9, 0xd9} /* small letter u with horn and acute */,
+        {0x1eea, 0xaf} /* capital letter u with horn and grave */,
+        {0x1eeb, 0xd8} /* small letter u with horn and grave */,
+        {0x1eec, 0xb1} /* capital letter u with horn and hook above */,
+        {0x1eed, 0xba} /* small letter u with horn and hook above */,
+        {0x1eee, 0x1d} /* capital letter u with horn and tilde */,
+        {0x1eef, 0xbb} /* small letter u with horn and tilde */,
+        {0x1ef0, 0x15} /* latine u cornu point souscrit */,
+        {0x1ef1, 0xbf} /* latine u cornu point souscrit */,
+        {0x1ef2, 0xb2} /* capital letter y with grave */,
+        {0x1ef3, 0xff} /* small letter y with grave */,
+        {0x1ef4, 0x19} /* capital letter y with dot below */,
+        {0x1ef5, 0x9c} /* small letter y with dot below */,
+        {0x1ef6, 0xfd} /* capital letter y with hook above */,
+        {0x1ef7, 0x9b} /* small letter y with hook above */,
+        {0x1ef8, 0xb3} /* capital letter y with tilde */,
+        {0x1ef9, 0xcf} /* small letter y with tilde */
+};
+
+/*
+#define cet_ucs4_to_vps_extra_ct 0
+const cet_ucs4_link_t cet_ucs4_to_vps_extra[cet_ucs4_to_vps_extra_ct] = {};
+*/
+
+cet_cs_vec_t cet_cs_vec_vps =  /* defined in cet.h */
+{      
+       cet_cs_name_vps,                /* name of character set        */
+       cet_cs_alias_vps,               /* alias table                  */
+
+       NULL,                           /* ... to UCS-4 converter (multi-byte) */
+       NULL,                           /* UCS-4 to ... converter (multi-byte) */
+
+       cet_ucs4_map_vps,               /* char to UCS-4 value table    */
+       cet_ucs4_ofs_vps,               /* first non standard character */
+       cet_ucs4_cnt_vps,               /* number of values in table    */
+
+       cet_ucs4_to_vps_links,  /* UCS-4 to char links          */
+       cet_ucs4_to_vps_ct,             /* number of links              */
+
+       NULL,                           /* hand made UCS-4 links        */
+       0,                              /* number of extra links        */
+
+       NULL    /* for internal use */
+};
+
+
+/*
+const int vps_ucs4_full_map[] =
+{
+       0x0000, 0x0001, 0x1ea0, 0x1eac, 0x1eb6, 0x1eb8, 0x1ec6, 0x0007, 
+       0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 
+       0x1eca, 0x1ecc, 0x1ed8, 0x1ee2, 0x1ee4, 0x1ef0, 0x0016, 0x0017, 
+       0x0018, 0x1ef4, 0x001a, 0x001b, 0x1eaa, 0x1eee, 0x001e, 0x001f, 
+       0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 
+       0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 
+       0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 
+       0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+       0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 
+       0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 
+       0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+       0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 
+       0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 
+       0x00c0, 0x1ea2, 0x00c3, 0x1ea4, 0x1ea6, 0x1ea8, 0x1ecd, 0x1ed7, 
+       0x0102, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec7, 0x1eae, 0x1eb0, 0x1eb2, 
+       0x1ebe,     -1,     -1, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ed0, 0x1ed2, 
+       0x1ed4,     -1, 0x00fd, 0x1ef7, 0x1ef5, 0x1eda, 0x1edc, 0x1ede, 
+           -1, 0x1eaf, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eb7, 0x1ee0, 0x1edb, 
+       0x00d9, 0x1edd, 0x1edf, 0x1ee1, 0x0168, 0x1ee8, 0x1ee3, 0x1eea, 
+       0x1ed5, 0x1eec, 0x1ef2, 0x1ef8, 0x00cd, 0x00cc, 0x1ed9, 0x1ec8, 
+       0x0128, 0x00d3, 0x1eed, 0x1eef, 0x00d2, 0x1ece, 0x00d5, 0x1ef1, 
+       0x1ea7, 0x00c1, 0x00c2, 0x1ea5, 0x1ea9, 0x1eab, 0x1ead, 0x0111, 
+       0x1ebb, 0x00c9, 0x00ca, 0x1eb9, 0x1ec9, 0x1ec5, 0x1ecb, 0x1ef9, 
+       0x01af, 0x1ee6, 0x1ed3, 0x1ed1, 0x00d4, 0x1ecf, 0x01a1, 0x00c8, 
+       0x1eeb, 0x1ee9, 0x00da, 0x0169, 0x01b0, 0x00dd, 0x1eba,     -1, 
+       0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x1ea3, 0x1ea1, 0x0103,     -1, 
+       0x00e8, 0x00e9, 0x00ea, 0x1ebd, 0x00ec, 0x00ed,     -1, 0x0129, 
+       0x1eb4, 0x0110, 0x00f2, 0x00f3, 0x00f4, 0x00f5,     -1, 0x01a0, 
+       0x1ee5, 0x00f9, 0x00fa, 0x1ee7,     -1, 0x1ef6, 0x1ebc, 0x1ef3
+};
+*/
+
+#endif
diff --git a/gpsbabel/cet_util.c b/gpsbabel/cet_util.c
new file mode 100644 (file)
index 0000000..a9e60b8
--- /dev/null
@@ -0,0 +1,1074 @@
+/*
+
+    Character encoding transformation - utilities
+
+    Copyright (C) 2005 Olaf Klein, o.b.klein@t-online.de
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+*/
+
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "defs.h"
+#include "cet.h"
+#include "cet_util.h"
+
+#ifndef NO_EXPAT
+# include <expat.h>
+#endif
+
+#define MYNAME "cet_util"
+
+static cet_cs_vec_t *cet_cs_vec_root = NULL;
+
+typedef struct cet_cs_alias_s
+{
+       char *name;
+       cet_cs_vec_t *vec;
+} cet_cs_alias_t;
+
+static cet_cs_alias_t *cet_cs_alias;
+static int cet_cs_alias_ct = 0;
+static int cet_cs_vec_ct = 0;
+
+/* %%% short hand strings transmission for main character sets %%% */
+
+#include "cet/iso_8859_1.h"
+char *
+cet_str_utf8_to_iso8859_1(const char *src)
+{
+       return cet_str_utf8_to_any(src, &cet_cs_vec_iso_8859_1);
+}
+
+char *
+cet_str_iso8859_1_to_utf8(const char *src)
+{
+       return cet_str_any_to_utf8(src, &cet_cs_vec_iso_8859_1);
+}
+
+#include "cet/iso_8859_15.h"
+
+char *
+cet_str_utf8_to_iso8859_15(const char *src)
+{
+       return cet_str_utf8_to_any(src, &cet_cs_vec_iso_8859_15);
+}
+
+char *
+cet_str_iso8859_15_to_utf8(const char *src)
+{
+       return cet_str_any_to_utf8(src, &cet_cs_vec_iso_8859_15);
+}
+
+#include "cet/ansi_x3_4_1968.h"
+
+char *
+cet_str_utf8_to_us_ascii(const char *src)
+{
+       return cet_str_utf8_to_any(src, &cet_cs_vec_ansi_x3_4_1968);
+}
+
+char *
+cet_str_us_ascii_to_utf8(const char *src)
+{
+       return cet_str_any_to_utf8(src, &cet_cs_vec_ansi_x3_4_1968);
+}
+
+#include "cet/cp1252.h"
+
+char *
+cet_str_utf8_to_cp1252(const char *src)
+{
+       return cet_str_utf8_to_any(src, &cet_cs_vec_cp1252);
+}
+
+char *
+cet_str_cp1252_to_utf8(const char *src)
+{
+       return cet_str_any_to_utf8(src, &cet_cs_vec_cp1252);
+}
+
+
+/* helpers */
+
+/* %%% %%%
+ *
+ *
+ */
+int XMLCALL cet_lib_expat_UnknownEncodingHandler(void *data, const XML_Char *encoding, XML_Encoding *info)
+{
+       cet_cs_vec_t *cs;
+       int i, c, ucs4_def;
+
+       cs = cet_find_cs_by_name(encoding);
+       if (cs == NULL) return XML_STATUS_ERROR;        /* fatal(MYNAME ": Unknown character set \"%s\"!\n", encoding); */
+       
+       cet_char_to_ucs4(CET_NOT_CONVERTABLE_DEFAULT, cs, &ucs4_def);
+       
+       for (i = 0; i < cs->ucs4_offset; i++) info->map[i] = i;                                 /* equal to ascii part */
+       for (i = 0; i < cs->ucs4_count; i++)                                                    /* mixed table */
+       {
+           c = cs->ucs4_map[i];
+           if (c == -1) c = ucs4_def;
+           info->map[i + cs->ucs4_offset] = c;
+       }
+       for (i = cs->ucs4_offset + cs->ucs4_count; i < 256; i++) info->map[i] = ucs4_def;       /* non convertable trailer */
+
+       info->data = NULL;
+       info->convert = NULL;
+       info->release = NULL;
+
+       cet_convert_init(CET_CHARSET_UTF8, 1);          /* We do not need to transform any string */
+               
+       if (global_opts.verbose_status > 0)
+           printf(MYNAME ": XML parser - encoding handler for character set \"%s\" established.\n", encoding);
+           
+       return XML_STATUS_OK;
+}
+
+
+char *
+cet_str_uni_to_any(const short *src, int length, const cet_cs_vec_t *dest_vec)
+{
+       char *res, *c;
+       const cet_cs_vec_t *cs = (dest_vec != NULL) ? dest_vec : &cet_cs_vec_ansi_x3_4_1968;
+       
+       res = cet_str_uni_to_utf8(src, length);
+       if (cs != &cet_cs_vec_utf8)
+       {
+               c = cet_str_utf8_to_any(res, cs);
+               xfree(res);
+               res = c;
+       }
+       return res;
+}
+
+/* %%% cet_str_any_to_any %%% 
+ *
+ * -->> for use in mkshort */
+
+char *
+cet_str_any_to_any(const char *src, const cet_cs_vec_t *src_vec, const cet_cs_vec_t *dest_vec)
+{
+       char *c0, *c1;
+       const cet_cs_vec_t *v_in =  (src_vec != NULL )  ? src_vec :  &cet_cs_vec_ansi_x3_4_1968;
+       const cet_cs_vec_t *v_out = (dest_vec != NULL ) ? dest_vec : &cet_cs_vec_ansi_x3_4_1968;
+       
+       if (src == NULL) 
+               return NULL;
+       else 
+               if ((*src == '\0') || (v_in == v_out)) return xstrdup(src);
+       
+       c0 = (v_in == &cet_cs_vec_utf8) ? xstrdup(src) : cet_str_any_to_utf8(src, v_in);
+       c1 = (v_out == &cet_cs_vec_utf8) ? xstrdup(c0) : cet_str_utf8_to_any(c0, v_out);
+       xfree(c0);
+
+       return c1;
+}
+
+/* %%% cet_valid_char %%%
+ *
+ * returnes 1 if convertable otherwise 0
+ *
+ */
+
+int
+cet_valid_char(const char *src, const cet_cs_vec_t *vec)
+{
+       int value;
+
+       const cet_cs_vec_t *v = (vec != NULL) ? vec : &cet_cs_vec_ansi_x3_4_1968;
+       return cet_char_to_ucs4(*src, v, &value);
+}
+
+/* %%% include character set headers %%% */
+
+#include "cet/ansi_x3_4_1968.h"
+#include "cet/atarist.h"
+#include "cet/baltic.h"
+#include "cet/bs_4730.h"
+#include "cet/bs_viewdata.h"
+#include "cet/cp1250.h"
+#include "cet/cp1251.h"
+#include "cet/cp1252.h"
+#include "cet/cp1253.h"
+#include "cet/cp1254.h"
+#include "cet/cp1255.h"
+#include "cet/cp1256.h"
+#include "cet/cp1257.h"
+#include "cet/csa_z243_4_1985_1.h"
+#include "cet/csa_z243_4_1985_2.h"
+#include "cet/csa_z243_4_1985_gr.h"
+#include "cet/csn_369103.h"
+#include "cet/cwi.h"
+#include "cet/dec_mcs.h"
+#include "cet/din_66003.h"
+#include "cet/ds_2089.h"
+#include "cet/ecma_cyrillic.h"
+#include "cet/es.h"
+#include "cet/es2.h"
+#include "cet/gb_1988_80.h"
+#include "cet/gost_19768_87.h"
+#include "cet/hp_roman8.h"
+#include "cet/ibm037.h"
+#include "cet/ibm1004.h"
+#include "cet/ibm1026.h"
+#include "cet/ibm1047.h"
+#include "cet/ibm256.h"
+#include "cet/ibm273.h"
+#include "cet/ibm277.h"
+#include "cet/ibm278.h"
+#include "cet/ibm280.h"
+#include "cet/ibm284.h"
+#include "cet/ibm285.h"
+#include "cet/ibm297.h"
+#include "cet/ibm437.h"
+#include "cet/ibm500.h"
+#include "cet/ibm850.h"
+#include "cet/ibm851.h"
+#include "cet/ibm852.h"
+#include "cet/ibm855.h"
+#include "cet/ibm857.h"
+#include "cet/ibm860.h"
+#include "cet/ibm861.h"
+#include "cet/ibm862.h"
+#include "cet/ibm863.h"
+#include "cet/ibm864.h"
+#include "cet/ibm865.h"
+#include "cet/ibm868.h"
+#include "cet/ibm869.h"
+#include "cet/ibm871.h"
+#include "cet/ibm891.h"
+#include "cet/ibm903.h"
+#include "cet/ibm904.h"
+#include "cet/iec_p27_1.h"
+#include "cet/iso_10367_box.h"
+#include "cet/iso_5427.h"
+#include "cet/iso_646_irv.h"
+#include "cet/iso_6937_2_25.h"
+#include "cet/iso_8859_1.h"
+#include "cet/iso_8859_10.h"
+#include "cet/iso_8859_13.h"
+#include "cet/iso_8859_14.h"
+#include "cet/iso_8859_15.h"
+#include "cet/iso_8859_2.h"
+#include "cet/iso_8859_3.h"
+#include "cet/iso_8859_4.h"
+#include "cet/iso_8859_5.h"
+#include "cet/iso_8859_6.h"
+#include "cet/iso_8859_7.h"
+#include "cet/iso_8859_8.h"
+#include "cet/iso_8859_9.h"
+#include "cet/iso_8859_supp.h"
+#include "cet/it.h"
+#include "cet/jis_c6220_1969_ro.h"
+#include "cet/jis_x0201.h"
+#include "cet/jus_i_b1_002.h"
+#include "cet/jus_i_b1_003_mac.h"
+#include "cet/jus_i_b1_003_serb.h"
+#include "cet/keybcs2.h"
+#include "cet/koi8_r.h"
+#include "cet/koi8_ru.h"
+#include "cet/koi8_u.h"
+#include "cet/koi_7.h"
+#include "cet/koi_8.h"
+#include "cet/koi_8_cs2.h"
+#include "cet/ksc5636.h"
+#include "cet/latin_greek_1.h"
+#include "cet/mac_is.h"
+#include "cet/macintosh.h"
+#include "cet/macintosh_ce.h"
+#include "cet/msz_7795_3.h"
+#include "cet/nats_dano.h"
+#include "cet/nats_sefi.h"
+#include "cet/nc_nc00_10.h"
+#include "cet/nextstep.h"
+#include "cet/nf_z_62_010.h"
+#include "cet/nf_z_62_010__1973_.h"
+#include "cet/ns_4551_1.h"
+#include "cet/ns_4551_2.h"
+#include "cet/pt.h"
+#include "cet/pt2.h"
+#include "cet/sami.h"
+#include "cet/sen_850200_b.h"
+#include "cet/sen_850200_c.h"
+#include "cet/tcvn.h"
+#include "cet/viscii.h"
+#include "cet/vps.h"
+
+#ifdef DEBUG_MEM
+
+void
+cet_check_cs(cet_cs_vec_t *vec)        /* test well sorted link & extra tables */
+{
+       cet_ucs4_link_t *link;
+       
+       if ((link = (cet_ucs4_link_t *)vec->ucs4_link))
+       {
+           int i, j;
+           
+           for (i = 0, j = 1; j < vec->ucs4_links; i++, j++)
+           {
+               if (link[i].value >= link[j].value)
+               {
+                   printf(MYNAME ": checked 0x%04x with 0x%04x\n", link[i].value, link[j].value);
+                   fatal(MYNAME ": \"%s\"-link-table unsorted !!!\n", vec->name);
+               }
+               
+           }
+       }
+       if ((link = (cet_ucs4_link_t *)vec->ucs4_extra))
+       {
+           int i, j;
+           
+           for (i = 0, j = 1; j < vec->ucs4_extras; i++, j++)
+           {
+               if (link[i].value >= link[j].value)
+               {
+                   printf(MYNAME ": check 0x%04x with 0x%04x\n", link[i].value, link[j].value);
+                   fatal(MYNAME ": \"%s\"-extra-table unsorted !!!\n", vec->name);
+               }
+               
+           }
+       }
+}
+
+#endif
+
+static signed int
+cet_cs_alias_qsort_cb(const void *a, const void *b)
+{
+       const cet_cs_alias_t *va = a;
+       const cet_cs_alias_t *vb = b;
+       return case_ignore_strcmp(va->name, vb->name);
+}
+
+static signed int
+cet_cs_vec_qsort_cb(const void *a, const void *b)
+{
+       const cet_cs_vec_t *va = *(cet_cs_vec_t **)a;
+       const cet_cs_vec_t *vb = *(cet_cs_vec_t **)b;
+       return case_ignore_strcmp(va->name, vb->name);
+}
+
+void 
+cet_register_cs(cet_cs_vec_t *vec)
+{
+       if (vec->next == NULL)
+       {
+           vec->next = cet_cs_vec_root;
+           cet_cs_vec_root = vec;
+           cet_cs_vec_ct++;
+#ifdef DEBUG_MEM
+           cet_check_cs(vec);
+#endif
+       }
+}
+
+/* Dummy vector for our native character set */
+
+const char *cet_cs_utf8_alias[] =
+{
+       "utf8", NULL
+};
+
+cet_cs_vec_t cet_cs_vec_utf8 = 
+{
+       CET_CHARSET_UTF8,
+       cet_cs_utf8_alias,
+       NULL,   /* dec */
+       NULL,   /* enc */
+       NULL,   /* link */
+       0,
+       0,
+       NULL,   /* extra */
+       0,      /* extras */
+       NULL
+};
+
+void
+cet_register(void)
+{
+       int i, c;
+       
+       if (cet_cs_vec_root != NULL) return;
+       
+       cet_cs_vec_ct = 0;
+       cet_register_cs(&cet_cs_vec_utf8);                      /* internal place holder */
+       
+#ifdef cet_cs_name_ansi_x3_4_1968
+cet_register_cs(&cet_cs_vec_ansi_x3_4_1968);
+#endif
+#ifdef cet_cs_name_atarist
+cet_register_cs(&cet_cs_vec_atarist);
+#endif
+#ifdef cet_cs_name_baltic
+cet_register_cs(&cet_cs_vec_baltic);
+#endif
+#ifdef cet_cs_name_bs_4730
+cet_register_cs(&cet_cs_vec_bs_4730);
+#endif
+#ifdef cet_cs_name_bs_viewdata
+cet_register_cs(&cet_cs_vec_bs_viewdata);
+#endif
+#ifdef cet_cs_name_cp1250
+cet_register_cs(&cet_cs_vec_cp1250);
+#endif
+#ifdef cet_cs_name_cp1251
+cet_register_cs(&cet_cs_vec_cp1251);
+#endif
+#ifdef cet_cs_name_cp1252
+cet_register_cs(&cet_cs_vec_cp1252);
+#endif
+#ifdef cet_cs_name_cp1253
+cet_register_cs(&cet_cs_vec_cp1253);
+#endif
+#ifdef cet_cs_name_cp1254
+cet_register_cs(&cet_cs_vec_cp1254);
+#endif
+#ifdef cet_cs_name_cp1255
+cet_register_cs(&cet_cs_vec_cp1255);
+#endif
+#ifdef cet_cs_name_cp1256
+cet_register_cs(&cet_cs_vec_cp1256);
+#endif
+#ifdef cet_cs_name_cp1257
+cet_register_cs(&cet_cs_vec_cp1257);
+#endif
+#ifdef cet_cs_name_csa_z243_4_1985_1
+cet_register_cs(&cet_cs_vec_csa_z243_4_1985_1);
+#endif
+#ifdef cet_cs_name_csa_z243_4_1985_2
+cet_register_cs(&cet_cs_vec_csa_z243_4_1985_2);
+#endif
+#ifdef cet_cs_name_csa_z243_4_1985_gr
+cet_register_cs(&cet_cs_vec_csa_z243_4_1985_gr);
+#endif
+#ifdef cet_cs_name_csn_369103
+cet_register_cs(&cet_cs_vec_csn_369103);
+#endif
+#ifdef cet_cs_name_cwi
+cet_register_cs(&cet_cs_vec_cwi);
+#endif
+#ifdef cet_cs_name_dec_mcs
+cet_register_cs(&cet_cs_vec_dec_mcs);
+#endif
+#ifdef cet_cs_name_din_66003
+cet_register_cs(&cet_cs_vec_din_66003);
+#endif
+#ifdef cet_cs_name_ds_2089
+cet_register_cs(&cet_cs_vec_ds_2089);
+#endif
+#ifdef cet_cs_name_ecma_cyrillic
+cet_register_cs(&cet_cs_vec_ecma_cyrillic);
+#endif
+#ifdef cet_cs_name_es
+cet_register_cs(&cet_cs_vec_es);
+#endif
+#ifdef cet_cs_name_es2
+cet_register_cs(&cet_cs_vec_es2);
+#endif
+#ifdef cet_cs_name_gb_1988_80
+cet_register_cs(&cet_cs_vec_gb_1988_80);
+#endif
+#ifdef cet_cs_name_gost_19768_87
+cet_register_cs(&cet_cs_vec_gost_19768_87);
+#endif
+#ifdef cet_cs_name_hp_roman8
+cet_register_cs(&cet_cs_vec_hp_roman8);
+#endif
+#ifdef cet_cs_name_ibm037
+cet_register_cs(&cet_cs_vec_ibm037);
+#endif
+#ifdef cet_cs_name_ibm1004
+cet_register_cs(&cet_cs_vec_ibm1004);
+#endif
+#ifdef cet_cs_name_ibm1026
+cet_register_cs(&cet_cs_vec_ibm1026);
+#endif
+#ifdef cet_cs_name_ibm1047
+cet_register_cs(&cet_cs_vec_ibm1047);
+#endif
+#ifdef cet_cs_name_ibm256
+cet_register_cs(&cet_cs_vec_ibm256);
+#endif
+#ifdef cet_cs_name_ibm273
+cet_register_cs(&cet_cs_vec_ibm273);
+#endif
+#ifdef cet_cs_name_ibm277
+cet_register_cs(&cet_cs_vec_ibm277);
+#endif
+#ifdef cet_cs_name_ibm278
+cet_register_cs(&cet_cs_vec_ibm278);
+#endif
+#ifdef cet_cs_name_ibm280
+cet_register_cs(&cet_cs_vec_ibm280);
+#endif
+#ifdef cet_cs_name_ibm284
+cet_register_cs(&cet_cs_vec_ibm284);
+#endif
+#ifdef cet_cs_name_ibm285
+cet_register_cs(&cet_cs_vec_ibm285);
+#endif
+#ifdef cet_cs_name_ibm297
+cet_register_cs(&cet_cs_vec_ibm297);
+#endif
+#ifdef cet_cs_name_ibm437
+cet_register_cs(&cet_cs_vec_ibm437);
+#endif
+#ifdef cet_cs_name_ibm500
+cet_register_cs(&cet_cs_vec_ibm500);
+#endif
+#ifdef cet_cs_name_ibm850
+cet_register_cs(&cet_cs_vec_ibm850);
+#endif
+#ifdef cet_cs_name_ibm851
+cet_register_cs(&cet_cs_vec_ibm851);
+#endif
+#ifdef cet_cs_name_ibm852
+cet_register_cs(&cet_cs_vec_ibm852);
+#endif
+#ifdef cet_cs_name_ibm855
+cet_register_cs(&cet_cs_vec_ibm855);
+#endif
+#ifdef cet_cs_name_ibm857
+cet_register_cs(&cet_cs_vec_ibm857);
+#endif
+#ifdef cet_cs_name_ibm860
+cet_register_cs(&cet_cs_vec_ibm860);
+#endif
+#ifdef cet_cs_name_ibm861
+cet_register_cs(&cet_cs_vec_ibm861);
+#endif
+#ifdef cet_cs_name_ibm862
+cet_register_cs(&cet_cs_vec_ibm862);
+#endif
+#ifdef cet_cs_name_ibm863
+cet_register_cs(&cet_cs_vec_ibm863);
+#endif
+#ifdef cet_cs_name_ibm864
+cet_register_cs(&cet_cs_vec_ibm864);
+#endif
+#ifdef cet_cs_name_ibm865
+cet_register_cs(&cet_cs_vec_ibm865);
+#endif
+#ifdef cet_cs_name_ibm868
+cet_register_cs(&cet_cs_vec_ibm868);
+#endif
+#ifdef cet_cs_name_ibm869
+cet_register_cs(&cet_cs_vec_ibm869);
+#endif
+#ifdef cet_cs_name_ibm871
+cet_register_cs(&cet_cs_vec_ibm871);
+#endif
+#ifdef cet_cs_name_ibm891
+cet_register_cs(&cet_cs_vec_ibm891);
+#endif
+#ifdef cet_cs_name_ibm903
+cet_register_cs(&cet_cs_vec_ibm903);
+#endif
+#ifdef cet_cs_name_ibm904
+cet_register_cs(&cet_cs_vec_ibm904);
+#endif
+#ifdef cet_cs_name_iec_p27_1
+cet_register_cs(&cet_cs_vec_iec_p27_1);
+#endif
+#ifdef cet_cs_name_iso_10367_box
+cet_register_cs(&cet_cs_vec_iso_10367_box);
+#endif
+#ifdef cet_cs_name_iso_5427
+cet_register_cs(&cet_cs_vec_iso_5427);
+#endif
+#ifdef cet_cs_name_iso_646_irv
+cet_register_cs(&cet_cs_vec_iso_646_irv);
+#endif
+#ifdef cet_cs_name_iso_6937_2_25
+cet_register_cs(&cet_cs_vec_iso_6937_2_25);
+#endif
+#ifdef cet_cs_name_iso_8859_1
+cet_register_cs(&cet_cs_vec_iso_8859_1);
+#endif
+#ifdef cet_cs_name_iso_8859_10
+cet_register_cs(&cet_cs_vec_iso_8859_10);
+#endif
+#ifdef cet_cs_name_iso_8859_13
+cet_register_cs(&cet_cs_vec_iso_8859_13);
+#endif
+#ifdef cet_cs_name_iso_8859_14
+cet_register_cs(&cet_cs_vec_iso_8859_14);
+#endif
+#ifdef cet_cs_name_iso_8859_15
+cet_register_cs(&cet_cs_vec_iso_8859_15);
+#endif
+#ifdef cet_cs_name_iso_8859_2
+cet_register_cs(&cet_cs_vec_iso_8859_2);
+#endif
+#ifdef cet_cs_name_iso_8859_3
+cet_register_cs(&cet_cs_vec_iso_8859_3);
+#endif
+#ifdef cet_cs_name_iso_8859_4
+cet_register_cs(&cet_cs_vec_iso_8859_4);
+#endif
+#ifdef cet_cs_name_iso_8859_5
+cet_register_cs(&cet_cs_vec_iso_8859_5);
+#endif
+#ifdef cet_cs_name_iso_8859_6
+cet_register_cs(&cet_cs_vec_iso_8859_6);
+#endif
+#ifdef cet_cs_name_iso_8859_7
+cet_register_cs(&cet_cs_vec_iso_8859_7);
+#endif
+#ifdef cet_cs_name_iso_8859_8
+cet_register_cs(&cet_cs_vec_iso_8859_8);
+#endif
+#ifdef cet_cs_name_iso_8859_9
+cet_register_cs(&cet_cs_vec_iso_8859_9);
+#endif
+#ifdef cet_cs_name_iso_8859_supp
+cet_register_cs(&cet_cs_vec_iso_8859_supp);
+#endif
+#ifdef cet_cs_name_it
+cet_register_cs(&cet_cs_vec_it);
+#endif
+#ifdef cet_cs_name_jis_c6220_1969_ro
+cet_register_cs(&cet_cs_vec_jis_c6220_1969_ro);
+#endif
+#ifdef cet_cs_name_jis_x0201
+cet_register_cs(&cet_cs_vec_jis_x0201);
+#endif
+#ifdef cet_cs_name_jus_i_b1_002
+cet_register_cs(&cet_cs_vec_jus_i_b1_002);
+#endif
+#ifdef cet_cs_name_jus_i_b1_003_mac
+cet_register_cs(&cet_cs_vec_jus_i_b1_003_mac);
+#endif
+#ifdef cet_cs_name_jus_i_b1_003_serb
+cet_register_cs(&cet_cs_vec_jus_i_b1_003_serb);
+#endif
+#ifdef cet_cs_name_keybcs2
+cet_register_cs(&cet_cs_vec_keybcs2);
+#endif
+#ifdef cet_cs_name_koi8_r
+cet_register_cs(&cet_cs_vec_koi8_r);
+#endif
+#ifdef cet_cs_name_koi8_ru
+cet_register_cs(&cet_cs_vec_koi8_ru);
+#endif
+#ifdef cet_cs_name_koi8_u
+cet_register_cs(&cet_cs_vec_koi8_u);
+#endif
+#ifdef cet_cs_name_koi_7
+cet_register_cs(&cet_cs_vec_koi_7);
+#endif
+#ifdef cet_cs_name_koi_8
+cet_register_cs(&cet_cs_vec_koi_8);
+#endif
+#ifdef cet_cs_name_koi_8_cs2
+cet_register_cs(&cet_cs_vec_koi_8_cs2);
+#endif
+#ifdef cet_cs_name_ksc5636
+cet_register_cs(&cet_cs_vec_ksc5636);
+#endif
+#ifdef cet_cs_name_latin_greek_1
+cet_register_cs(&cet_cs_vec_latin_greek_1);
+#endif
+#ifdef cet_cs_name_mac_is
+cet_register_cs(&cet_cs_vec_mac_is);
+#endif
+#ifdef cet_cs_name_macintosh
+cet_register_cs(&cet_cs_vec_macintosh);
+#endif
+#ifdef cet_cs_name_macintosh_ce
+cet_register_cs(&cet_cs_vec_macintosh_ce);
+#endif
+#ifdef cet_cs_name_msz_7795_3
+cet_register_cs(&cet_cs_vec_msz_7795_3);
+#endif
+#ifdef cet_cs_name_nats_dano
+cet_register_cs(&cet_cs_vec_nats_dano);
+#endif
+#ifdef cet_cs_name_nats_sefi
+cet_register_cs(&cet_cs_vec_nats_sefi);
+#endif
+#ifdef cet_cs_name_nc_nc00_10
+cet_register_cs(&cet_cs_vec_nc_nc00_10);
+#endif
+#ifdef cet_cs_name_nextstep
+cet_register_cs(&cet_cs_vec_nextstep);
+#endif
+#ifdef cet_cs_name_nf_z_62_010
+cet_register_cs(&cet_cs_vec_nf_z_62_010);
+#endif
+#ifdef cet_cs_name_nf_z_62_010__1973_
+cet_register_cs(&cet_cs_vec_nf_z_62_010__1973_);
+#endif
+#ifdef cet_cs_name_ns_4551_1
+cet_register_cs(&cet_cs_vec_ns_4551_1);
+#endif
+#ifdef cet_cs_name_ns_4551_2
+cet_register_cs(&cet_cs_vec_ns_4551_2);
+#endif
+#ifdef cet_cs_name_pt
+cet_register_cs(&cet_cs_vec_pt);
+#endif
+#ifdef cet_cs_name_pt2
+cet_register_cs(&cet_cs_vec_pt2);
+#endif
+#ifdef cet_cs_name_sami
+cet_register_cs(&cet_cs_vec_sami);
+#endif
+#ifdef cet_cs_name_sen_850200_b
+cet_register_cs(&cet_cs_vec_sen_850200_b);
+#endif
+#ifdef cet_cs_name_sen_850200_c
+cet_register_cs(&cet_cs_vec_sen_850200_c);
+#endif
+#ifdef cet_cs_name_tcvn
+cet_register_cs(&cet_cs_vec_tcvn);
+#endif
+#ifdef cet_cs_name_viscii
+cet_register_cs(&cet_cs_vec_viscii);
+#endif
+#ifdef cet_cs_name_vps
+cet_register_cs(&cet_cs_vec_vps);
+#endif
+
+       if ( cet_cs_vec_ct > 0)
+       {
+           cet_cs_vec_t *p;
+           cet_cs_alias_t *list;
+           c = 0;
+           
+           /* enumerate count of all names and aliases */
+           
+           for (p = cet_cs_vec_root; p != NULL; p = p->next)
+           {
+               c++;
+               if (p->alias != NULL)
+               {
+                   char **a = (char **)p->alias;
+                   while ((*a) != NULL)
+                   {
+                       a++;
+                       c++;
+                   }
+               }
+           }
+           /* create name to vec table */
+           
+           list = xcalloc(c, sizeof(*list));
+           i = 0;
+           for (p = cet_cs_vec_root; p != NULL; p = p->next)
+           {
+               if (p->alias != NULL)
+               {
+                   char **a = (char **)p->alias;
+                   
+                   list[i].name = xstrdup(p->name);
+                   list[i].vec = p;
+                   i++;
+                   while (*a != NULL)
+                   {
+                       list[i].name = xstrdup(*a);
+                       list[i].vec = p;
+                       i++;
+                       a++;
+                   }
+               }
+           }
+           qsort(list, c, sizeof(*list), cet_cs_alias_qsort_cb);
+           cet_cs_alias = list;
+           cet_cs_alias_ct = c;
+#ifdef CET_DEBUG           
+           printf("We have registered %d character sets with %d aliases\n", cet_cs_vec_ct, cet_cs_alias_ct);
+#endif
+       }
+}
+
+cet_cs_vec_t *
+cet_find_cs_by_name(const char *name)
+{
+       int i, j;
+       
+       cet_register();
+       
+       if (cet_cs_alias == NULL) return NULL;
+
+       i = 0;
+       j = cet_cs_alias_ct - 1;
+       
+       while (i <= j)
+       {
+           int a, x;
+           cet_cs_alias_t *n;
+           
+           a = (i + j) >> 1;
+           n = &cet_cs_alias[a];
+           x = case_ignore_strcmp(name, n->name);
+           if (x == 0) return n->vec;
+           else if (x < 0) j = a - 1;
+           else i = a + 1;
+       }
+       return NULL;
+}
+
+void 
+cet_deregister(void)
+{
+       int i;
+       int j = cet_cs_alias_ct;
+       cet_cs_alias_t *p = cet_cs_alias;
+       
+       if (p == NULL) return;
+
+       cet_cs_alias_ct = 0;
+       cet_cs_alias = NULL;
+       
+       for (i = 0; i < j; i++)
+           xfree(p[i].name);
+       xfree(p);
+}
+
+/* gpsbabel additions */
+
+int
+cet_validate_cs(const char *cs, cet_cs_vec_t **vec, char **cs_name)
+{
+       char buff[128];
+       char *c;
+       cet_cs_vec_t *v;
+
+       if ((cs == NULL) || (strlen(cs) == 0))          /* set default us-ascii */
+       {
+           *vec = &cet_cs_vec_ansi_x3_4_1968;          
+           *cs_name = xstrdup(CET_CHARSET_ASCII);
+           return 1;
+       }
+
+       v = cet_find_cs_by_name(cs);
+       if (v != NULL)
+       {
+           strncpy(buff, v->name, sizeof(buff));
+           c = buff;
+           while (*c != '\0')
+           {
+               *c = toupper(*c);
+               c++;
+           }
+           *cs_name = xstrdup(buff);
+           *vec = v;
+           return 1;
+       }
+       else
+       {
+           *cs_name = NULL;
+           *vec = NULL;
+           return 0;
+       }
+}
+
+void
+cet_convert_deinit(void)
+{
+       if (global_opts.charset_name != NULL) xfree(global_opts.charset_name);
+       global_opts.charset = NULL;
+       global_opts.charset_name = NULL;
+}
+
+void
+cet_convert_init(const char *cs_name, const int force)
+{
+       if ((force != 0) || (global_opts.charset == NULL))
+       {
+           cet_convert_deinit();
+           if (0 == cet_validate_cs(cs_name, &global_opts.charset, &global_opts.charset_name))
+               fatal("Unsupported character set \"%s\"!\n", cs_name);
+       }
+}
+
+
+/* -------------------------------------------------------------------- */
+/* %%%         complete data strings transformation                 %%% */
+/* -------------------------------------------------------------------- */
+
+static char * (*converter) (const char *) = NULL;
+
+/* two converters */
+
+static char *
+cet_convert_to_utf8(const char *str)
+{
+       return cet_str_any_to_utf8(str, global_opts.charset);
+}
+
+static char *
+cet_convert_from_utf8(const char *str)
+{
+       return cet_str_utf8_to_any(str, global_opts.charset);
+}
+
+/* cet_convert_string: internal used within cet_convert_strings process */
+
+char *
+cet_convert_string(char *str)
+{
+       char *res;
+       
+       if (str == NULL) return NULL;           /* return origin if empty or NULL */
+       else if (*str == '\0') return str;
+       
+       res = converter(str);
+       xfree(str);
+       return res;
+}
+
+/* cet_convert_waypt: internal used within cet_convert_strings process */
+
+static void
+cet_convert_waypt(const waypoint *wpt)
+{
+       waypoint *w = (waypoint *)wpt;
+       
+       w->shortname = cet_convert_string(wpt->shortname);
+       w->description = cet_convert_string(wpt->description);
+       w->notes = cet_convert_string(wpt->notes);
+       w->url = cet_convert_string(wpt->url);
+       w->url_link_text = cet_convert_string(wpt->url_link_text);
+}
+
+/* cet_convert_route_hdr: internal used within cet_convert_strings process */
+
+static void
+cet_convert_route_hdr(const route_head *route)
+{
+       route_head *rte = (route_head *)route;
+       rte->rte_name = cet_convert_string(route->rte_name);
+       rte->rte_desc = cet_convert_string(route->rte_desc);
+}
+
+/* cet_convert_route_tlr: internal used within cet_convert_strings process */
+
+static void
+cet_convert_route_tlr(const route_head *route)
+{
+}
+
+/* %%% cet_convert_strings (public) %%%
+ *
+ * - Convert all well known strings of GPS data from or to UTF-8 -
+ *
+ * !!! One of "source" or "target" must be internal cet_cs_vec_utf8 or NULL !!! */
+
+void
+cet_convert_strings(const cet_cs_vec_t *source, const cet_cs_vec_t *target, const char *format)
+{
+       char *cs_name_from, *cs_name_to;
+       
+//     printf("cet_convert_strings: enter\n"); fflush(stdout);
+       
+       converter = NULL;
+       
+       if ((source == NULL) || (source == &cet_cs_vec_utf8))
+       {
+           if ((target == NULL) || (target == &cet_cs_vec_utf8)) return;       /* Nothing to do */
+           
+           converter = cet_convert_from_utf8;
+           cs_name_from = (char *)cet_cs_vec_utf8.name;
+           cs_name_to = (char *)target->name;
+       }
+       else
+       {
+           if ((target != NULL) && (target != &cet_cs_vec_utf8))
+               fatal(MYNAME ": Internal error!\n");
+           converter = cet_convert_to_utf8;
+           cs_name_to = (char *)cet_cs_vec_utf8.name;
+           cs_name_from = (char *)source->name;
+       }
+       
+       if (global_opts.verbose_status > 0)
+           printf(MYNAME ": Converting from \"%s\" to \"%s\"", cs_name_from, cs_name_to);
+
+       waypt_disp_all(cet_convert_waypt);
+       route_disp_all(cet_convert_route_hdr, cet_convert_route_tlr, cet_convert_waypt);
+       track_disp_all(cet_convert_route_hdr, cet_convert_route_tlr, cet_convert_waypt);
+
+       if (global_opts.verbose_status > 0)
+           printf(", done.\n");
+}
+
+/* %%% cet_disp_character_set_names %%%
+ *
+ * - Put all character set names and aliases to "FILE" - */
+void
+cet_disp_character_set_names(FILE *fout)
+{
+       int i, c, ac;
+       cet_cs_vec_t *vec;
+       cet_cs_vec_t **list;
+           
+       if (cet_cs_alias_ct == 0) return;
+       
+       c = 0;
+       for (vec = cet_cs_vec_root; vec != NULL; vec = vec->next) c++;
+       
+       if (cet_cs_vec_ct != c)
+           fatal(MYNAME ": internal error \"%s\"!\n", "cet_disp_character_set_names");
+           
+       list = (cet_cs_vec_t **)xcalloc(c, sizeof(*list));
+       
+       i = 0;                                                          /* fill the list */
+       for (vec = cet_cs_vec_root; vec != NULL; vec = vec->next) list[i++] = vec;
+       qsort(list, c, sizeof(*list), cet_cs_vec_qsort_cb);             /* sort list by name */
+       
+       ac = 0;
+       
+       fprintf(fout, "GPSbabel builtin character sets: (-c option)\n");
+       for (i = 0; i < c; i++)
+       {
+           char **a;
+           
+           vec = list[i];
+           fprintf(fout, "\n* %s", vec->name);
+
+           a = (char **)vec->alias;
+           if (a != NULL)
+           {
+               int column = 0;
+               int alias = 0;
+               
+               while (*a != NULL)
+               {
+                   if (case_ignore_strcmp(*a, vec->name) != 0)
+                   {
+                       ac++;
+                       fprintf(fout, "%s%s%s",
+                           (alias++ > 0) ? ", " : "",
+                           (column++ % 6 == 0) ? "\n\t" : "",
+                           *a);
+                   }
+                   a++;
+               }
+           }
+       }
+       fprintf(fout, "\n\n");
+       fprintf(fout, "We have %d builtin character sets with %d aliases!\n", c, ac);
+       xfree(list);
+}
diff --git a/gpsbabel/cet_util.h b/gpsbabel/cet_util.h
new file mode 100644 (file)
index 0000000..dd2454a
--- /dev/null
@@ -0,0 +1,106 @@
+/*
+
+    Character encoding transformation - utilities header
+
+    Copyright (C) 2005 Olaf Klein, o.b.klein@t-online.de
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+*/
+
+#ifndef CET_UTIL_H
+#define CET_UTIL_H
+
+#include <ctype.h>
+#include <stdio.h>
+#include "cet.h"
+
+#ifndef NO_EXPAT
+# include <expat.h>
+#endif
+
+cet_cs_vec_t *cet_find_cs_by_name(const char *name);
+void cet_deregister(void);
+
+/* short hand transmissions */
+
+char *cet_str_utf8_to_cp1252(const char *src);
+char *cet_str_cp1252_to_utf8(const char *src);
+extern cet_cs_vec_t cet_cs_vec_cp1252;
+
+char *cet_str_iso8859_1_to_utf8(const char *src);
+char *cet_str_utf8_to_iso8859_1(const char *src);
+extern cet_cs_vec_t cet_cs_vec_iso8859_1;
+
+char *cet_str_iso8859_15_to_utf8(const char *src);
+char *cet_str_utf8_to_iso8859_15(const char *src);
+extern const cet_cs_vec_t cet_cs_vec_iso8859_15;
+
+char *cet_str_utf8_to_us_ascii(const char *src);
+char *cet_str_us_ascii_to_utf8(const char *src);
+extern cet_cs_vec_t cet_cs_vec_ansi_x3_4_1968;
+
+
+extern cet_cs_vec_t cet_cs_vec_utf8;
+
+
+/* Missing defines in older expat libraries | CET-REVIEW  */
+
+/* Taken from expat_external.h (Expat 1.95.7) */
+
+#ifndef XML_STATUS_OK                  
+# define XML_STATUS_OK 1
+#endif
+#ifndef XML_STATUS_ERROR
+# define XML_STATUS_ERROR 0
+#endif
+
+
+#ifndef XMLCALL
+#if defined(XML_USE_MSC_EXTENSIONS)
+#define XMLCALL __cdecl
+#elif defined(__GNUC__) && defined(__i386)
+#define XMLCALL __attribute__((cdecl))
+#else
+/* For any platform which uses this definition and supports more than
+   one calling convention, we need to extend this definition to
+   declare the convention used on that platform, if it's possible to
+   do so.
+
+   If this is the case for your platform, please file a bug report
+   with information on how to identify your platform via the C
+   pre-processor and how to specify the same calling convention as the
+   platform's malloc() implementation.
+*/
+#define XMLCALL
+#endif
+#endif  /* not defined XMLCALL */
+
+int XMLCALL cet_lib_expat_UnknownEncodingHandler(void *data, const XML_Char *encoding, XML_Encoding *info);
+
+/* helpers */
+
+char *cet_str_uni_to_any(const short *src, int length, const cet_cs_vec_t *dest_vec);
+char *cet_str_any_to_any(const char *src, const cet_cs_vec_t *src_vec, const cet_cs_vec_t *dest_vec);
+int cet_valid_char(const char *src, const cet_cs_vec_t *vec);
+
+/* gpsbabel extensions */
+
+void cet_convert_init(const char *cs_name, const int force);
+void cet_convert_strings(const cet_cs_vec_t *source, const cet_cs_vec_t *target, const char *format);
+void cet_convert_deinit(void);
+
+void cet_disp_character_set_names(FILE *fout);
+
+#endif
index ba44ed1f87c3a1fe36bba6963edd351c758a854d..7aca01cdc081db1089a3458d5b0632390b7edf28 100644 (file)
@@ -477,7 +477,7 @@ cetus_writewpt(const waypoint *wpt)
 
        vdata = (char *)rec + sizeof(*rec);
        if ( wpt->shortname ) {
-                       char *sn = str_utf8_to_cp1252(wpt->shortname);
+                       char *sn = xstrdup(wpt->shortname);
                        strncpy( vdata, sn, 16 );
                        vdata[15] = '\0';
                        xfree(sn);
@@ -490,7 +490,7 @@ cetus_writewpt(const waypoint *wpt)
        if (wpt->gc_data.desc_short.utfstring) {
                char *stripped_html = strip_html(&wpt->gc_data.desc_short);
                desc_short = xstrdup("\n\n");
-               desc_short = xstrappend(desc_short, str_utf8_to_cp1252(stripped_html));
+               desc_short = xstrappend(desc_short, xstrdup(stripped_html));
                xfree(stripped_html);
        } else {
                desc_short = xstrdup("");
@@ -499,13 +499,13 @@ cetus_writewpt(const waypoint *wpt)
        if (wpt->gc_data.desc_long.utfstring) {
                char *stripped_html = strip_html(&wpt->gc_data.desc_long);
                desc_long = xstrdup("\n\n");
-               desc_long = xstrappend(desc_long, str_utf8_to_cp1252(stripped_html));
+               desc_long = xstrappend(desc_long, xstrdup(stripped_html));
                xfree(stripped_html);
        } else {
                desc_long = xstrdup("");
        }
 
-       desc = wpt->description ? str_utf8_to_cp1252(wpt->description) : 
+       desc = wpt->description ? xstrdup(wpt->description) : 
                xstrdup("");
 
        snprintf(vdata, DESCSZ, "%s%s%s", 
@@ -529,7 +529,7 @@ cetus_writewpt(const waypoint *wpt)
        vdata += strlen( vdata ) + 1;
 
        if (wpt->gc_data.hint) {
-               char *hint = str_utf8_to_cp1252(wpt->gc_data.hint);
+               char *hint = xstrdup(wpt->gc_data.hint);
                rec->type = WptCache;
                strncpy( vdata, hint, NOTESZ + 1 ) ;
                xfree(hint);
@@ -638,4 +638,5 @@ ff_vecs_t cetus_vecs = {
        data_write,
        NULL,
        cetus_args,
+       CET_CHARSET_MS_ANSI, 0  /* CET-REVIEW */
 };
index 81b2a19ebc1e340841bda7923b0b7f2f8bcf8545..d3d6b195fceb55f7431b87afdf819303386026ec 100755 (executable)
@@ -24,6 +24,7 @@
 static XML_Parser psr;
 #endif
 #include <time.h>
+#include "cet_util.h"
 
 #include "uuid.h"
 
@@ -306,6 +307,7 @@ ce_rd_init(const char *fname)
                fatal(MYNAME ":Cannot create XML parser\n");
        }
 
+       XML_SetUnknownEncodingHandler(psr, cet_lib_expat_UnknownEncodingHandler, NULL);
        XML_SetElementHandler(psr, ce_start, ce_end);
        cdatastr = xcalloc(MY_CBUF,1);
        element = xcalloc(MY_CBUF,1);
@@ -634,4 +636,5 @@ ff_vecs_t coastexp_vecs = {
        ce_write,
        NULL,
        NULL,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 787e5be43648949ee4efe4a911e2544dad9b1921..0527c564416ebfcf5c1bfbe56a7d6bf259e7b635 100644 (file)
@@ -200,5 +200,7 @@ ff_vecs_t copilot_vecs = {
        wr_deinit,
        data_read,
        data_write,
-       NULL
+       NULL,
+       NULL,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 263d4f95c905c13df5b56644ab7767fe3b2cf6af..5979486e35539f31225a30430a7eca60f506f543 100644 (file)
@@ -1075,7 +1075,7 @@ xcsv_waypt_pr(const waypoint *wpt)
            description = shortname;
     } else if (description) {
            char *odesc = description;
-           description = str_utf8_to_ascii(odesc);
+           description = xstrdup(odesc);
            xfree(odesc);
     }
 
index a0b5eeb62eaf238979f79d5fb13490cd13764e5c..c949a3177235cc7f0ac0330c2672b4ac6611f4a2 100644 (file)
@@ -27,6 +27,8 @@
 #include <stddef.h>
 #include "queue.h"
 #include "gbtypes.h"
+#include "cet.h"
+#include "cet_util.h"
 
 
 /*
@@ -100,7 +102,9 @@ typedef struct {
        unsigned int    masked_objective;
        int verbose_status;     /* set by GUI wrappers for status */
        int no_smart_icons;     
-       int no_smart_names;     
+       int no_smart_names;
+       cet_cs_vec_t *charset;
+       char *charset_name;
 } global_options;
 
 extern global_options global_opts;
@@ -348,6 +352,8 @@ void free_gpx_extras (xml_tag * tag);
 void xcsv_setup_internal_style(const char *style_buf);
 void xcsv_read_internal_style(const char *style_buf);
 waypoint * find_waypt_by_name(const char *name);
+void waypt_backup(unsigned int *count, queue **head_bak);
+void waypt_restore(unsigned int count, queue *head_bak);
 
 route_head *route_head_alloc(void);
 void route_add (waypoint *);
@@ -366,6 +372,10 @@ void route_flush_all(void);
 unsigned int route_waypt_count(void);
 unsigned int route_count(void);
 unsigned int track_count(void);
+void route_backup(unsigned int *count, queue **head_bak);
+void route_restore(unsigned int count, queue *head_bak);
+void track_backup(unsigned int *count, queue **head_bak);
+void track_restore(unsigned int count, queue *head_bak);
 
 /*
  * All shortname functions take a shortname handle as the first arg.
@@ -481,6 +491,8 @@ typedef struct ff_vecs {
        ff_write write;
        ff_exit exit;
        arglist_t *args;
+       char *encode;
+       int fixed_encode;
 } ff_vecs_t;
 
 typedef struct style_vecs {
@@ -592,10 +604,17 @@ char * strip_nastyhtml(const char * in);
 /* 
  * Character encoding transformations.
  */
-char * str_utf8_to_cp1252(const char * str);
-char * str_utf8_to_ascii(const char * str);
-char * str_iso8859_1_to_utf8(const char *str );
 
+#define CET_NOT_CONVERTABLE_DEFAULT '$'
+#define CET_CHARSET_ASCII      "US-ASCII"
+#define CET_CHARSET_UTF8       "UTF-8"
+#define CET_CHARSET_MS_ANSI    "MS-ANSI"
+
+#define str_utf8_to_cp1252(str) cet_str_utf8_to_cp1252((str)) 
+#define str_cp1252_to_utf8(str) cet_str_cp1252_to_utf8((str))
+
+#define str_utf8_to_iso8859_1(str) cet_str_utf8_to_iso8859_1((str)) 
+#define str_iso8859_1_to_utf8(str) cet_str_iso8859_1_to_utf8((str))
 
 /* this lives in gpx.c */
 time_t xml_parse_time( const char *cdatastr );
index 3e65936bfe37a4399a22b3e315446b6d644e5673..ccc050eba968d9773fb609c3f8e44eee2bdafa54 100644 (file)
@@ -120,5 +120,7 @@ ff_vecs_t gpl_vecs = {
        gpl_wr_deinit,  
        gpl_read,
        gpl_write,
-       NULL
+       NULL,
+       NULL,
+       CET_CHARSET_UTF8, 1     /* there is no need to convert anything | CET-REVIEW */
 };
index 7d804e3c76578dc826dcec6ba4cb3d3248787564..1d4c950aecb4637167a7446b2f9a6609c252a48b 100644 (file)
@@ -272,5 +272,6 @@ ff_vecs_t easygps_vecs = {
        data_read,
        data_write,
        NULL, 
-       easygps_args
+       easygps_args,
+       CET_CHARSET_ASCII, 0    /* CET REVIEW */
 };
index 935266c296336c007ff23ee37b72f96c3d35ef32..75fc9e1fb8ab777aea00c9e3ef99bc46298d7c1c 100644 (file)
@@ -662,7 +662,8 @@ ff_vecs_t garmin_vecs = {
        data_read,
        data_write,
        NULL,
-       garmin_args
+       garmin_args,
+       CET_CHARSET_MS_ANSI, 0  /* CET-REVIEW */
 };
 
 static const char *d103_icons[16] = {
index 8f9727736ad8bdaa2fee3724de5ca0516d05ecec..f5846882d9c7445f61d7d1d98174a6754060c0d0 100644 (file)
@@ -338,5 +338,7 @@ ff_vecs_t gcdb_vecs = {
        wr_deinit,
        data_read,
        data_write,
-       NULL
+       NULL,
+       NULL,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 2db870f5d519b9437028a2009b21ef97c12a1853..a6f98af2b9257138107cf659036afea1df1f005e 100644 (file)
@@ -1688,7 +1688,8 @@ ff_vecs_t gdb_vecs = {
        gdb_read,
        gdb_write,
        NULL, 
-       gdb_args
+       gdb_args,
+       CET_CHARSET_MS_ANSI, 1                          /* CET-REVIEW */
 };
 
 /*******************************************************************************/
index 11cd0f72d5f1e83ab7ee648f1e06116db7646869..058cff6f22aa2a4cf67b70f3ed10c660a85a5905 100644 (file)
@@ -206,5 +206,6 @@ ff_vecs_t geo_vecs = {
        geo_read,
        geo_write,
        NULL, 
-       geo_args
+       geo_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index b0c85be6543246b582ab3b575774b4155f37e712..190c96ecb01f66566644883f64a725e8303ec1b8 100644 (file)
@@ -534,5 +534,6 @@ ff_vecs_t geoniche_vecs =
        data_read,
        data_write,
        NULL, 
-       Args
+       Args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 8b15a685685872115f8acc921fea22b52b3252c5..f9e21ffc4825f8f6ff832c98c15834173fd2885b 100644 (file)
@@ -177,6 +177,6 @@ ff_vecs_t glogbook_vecs = {
         glogbook_read,
         glogbook_write,
         NULL,
-        glogbook_args
+        glogbook_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
-
index ab09b35cc7bc092aec1707cc37f472984235ad98..6ac92f0df8032f2dff6001bdc511a30c525d1703 100644 (file)
@@ -221,5 +221,6 @@ ff_vecs_t google_vecs = {
        google_read,
        NULL,
        NULL, 
-       NULL
+       NULL,
+       CET_CHARSET_UTF8, 1     /* CET-REVIEW */
 };
index 6af407510b8e5b460d2af6124dad69a2f9f4ba1e..ad661de23bffe52f186a0795a738db93a3d778c4 100644 (file)
@@ -457,5 +457,6 @@ ff_vecs_t gpilots_vecs = {
        data_read,
        data_write,
        NULL, 
-       my_args
+       my_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 712b0e39230adbf328ff9709edb0167646b4d6d1..3c28631bc3d2211c5bd4c33590094c4fcb410672 100644 (file)
@@ -255,5 +255,6 @@ ff_vecs_t gpspilot_vecs = {
        data_read,
        data_write,
        NULL, 
-       gpspilot_args
+       gpspilot_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 983f6649bfd826406edfd37c9661fcc45cf7e1b1..e71ab5c7787e33e89b439680dd81bc005f682892 100644 (file)
@@ -109,7 +109,7 @@ gpsutil_disp(const waypoint *wpt)
 {
        double lon,lat;
        const char *icon_token;
-       char *tdesc = str_utf8_to_ascii(wpt->description);
+       char *tdesc = xstrdup(wpt->description);
 
        icon_token = mag_find_token_from_descr(wpt->icon_descr);
 
@@ -149,5 +149,7 @@ ff_vecs_t gpsutil_vecs = {
        wr_deinit,
        data_read,
        data_write,
-       NULL
+       NULL,
+       NULL,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index f11401bfd54109477a52f2cbd67213adc93bc8e4..120c759f2096f9721047f938c8fc61634c2395d1 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "defs.h"
 #include "xmlgeneric.h"
+#include "cet_util.h"
 #ifndef NO_EXPAT
        #include <expat.h>
        static XML_Parser psr;
@@ -939,6 +940,8 @@ gpx_rd_init(const char *fname)
        if (!psr) {
                fatal(MYNAME ": Cannot create XML Parser\n");
        }
+       XML_SetUnknownEncodingHandler(psr, cet_lib_expat_UnknownEncodingHandler, NULL);
+
        cdatastr = vmem_alloc(1, 0);
        *((char *)cdatastr.mem) = '\0';
 
@@ -1426,7 +1429,7 @@ gpx_write(void)
 
        setshort_length(mkshort_handle, short_length);
 
-       fprintf(ofd, "<?xml version=\"1.0\"?>\n");
+       fprintf(ofd, "<?xml version=\"1.0\" encoding=\"%s\"?>\n", global_opts.charset_name);
        fprintf(ofd, "<gpx\n version=\"%s\"\n", gpx_wversion);
        fprintf(ofd, "creator=\"GPSBabel - http://www.gpsbabel.org\"\n");
        fprintf(ofd, "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n");
@@ -1491,4 +1494,5 @@ ff_vecs_t gpx_vecs = {
        gpx_write,
        NULL, 
        gpx_args,
+       CET_CHARSET_UTF8, 0     /* non-fixed to create non UTF-8 XML's for testing | CET-REVIEW */
 };
index 4daa056bd6713bc7fb15ddb466ccf7fd021107fb..722f3de294afb9391c2e6473b7f1b1d0462adc7d 100644 (file)
@@ -292,6 +292,7 @@ ff_vecs_t hiketech_vecs = {
         hiketech_read,
         hiketech_write,
         NULL,
-        hiketech_args
+        hiketech_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
 
index 03613ff7f6a11c16c5b8549af89425e31fc6d9fe..e4ad7f4a39bd076e9abdb28445312d6039a17aec 100644 (file)
@@ -298,5 +298,7 @@ ff_vecs_t holux_vecs = {
        wr_deinit,
        data_read,
        data_write,
-       NULL
+       NULL,
+       NULL,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 9fb6a73a7ad68564f359b8e550bc6eab9c37aaaf..b9c6e45de96ba73036a5b02117d05cb050a5f3e8 100644 (file)
@@ -17,6 +17,7 @@
 
  */
 #include "defs.h"
+#include "cet_util.h"
 #if !NO_EXPAT
 #include <expat.h>
 static XML_Parser psr;
@@ -236,6 +237,7 @@ hsa_ndv_rd_init(const char *fname)
                fatal(MYNAME ":Cannot create XML parser\n");
        }
 
+       XML_SetUnknownEncodingHandler(psr, cet_lib_expat_UnknownEncodingHandler, NULL);
        XML_SetElementHandler(psr, hsa_ndv_start, hsa_ndv_end);
        cdatastr = xcalloc(MY_CBUF,1);
        XML_SetCharacterDataHandler(psr, hsa_ndv_cdata);
@@ -352,7 +354,8 @@ ff_vecs_t HsaEndeavourNavigator_vecs = {
        hsa_ndv_read,
        hsa_ndv_write,
        NULL, 
-       hsa_ndv_args
+       hsa_ndv_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
 
 //////////////////////////////////////////////////////////////////////////
index 7fc7247056106117db03cef758d3ea0279b341e6..9620861caa6137b4cef41188744b5ad6958e7bbd 100644 (file)
@@ -273,5 +273,6 @@ ff_vecs_t html_vecs = {
        NULL,
        data_write,
        NULL, 
-       html_args
+       html_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 95c7d41ac9c626d9f0109c9c4896d6a0dd1f6f30..05b3877d861a29da669b3c7ed4d67bc7bd1ccc42 100644 (file)
@@ -902,5 +902,6 @@ ff_vecs_t igc_vecs = {
     data_read,
     data_write,
     NULL, 
-    igc_args
+    igc_args,
+    CET_CHARSET_ASCII, 0       /* CET-REVIEW */
 };
index 5d2b6baec5367053819212af38d138319f7e2b59..834454eb99cec57aad50a0351afb2e1deb0966d4 100644 (file)
@@ -402,5 +402,6 @@ ff_vecs_t kml_vecs = {
        kml_read,
        kml_write,
        NULL, 
-       kml_args
+       kml_args,
+       CET_CHARSET_UTF8, 1     /* CET-REVIEW */
 };
index fd6d4288db6e4b18141ae4749c50d1fa7eaf284d..deb745562c776f84dc3c7c195c539fa17fa49653 100644 (file)
@@ -946,5 +946,6 @@ ff_vecs_t lowranceusr_vecs = {
        data_read,
        data_write,
        NULL, 
-       lowranceusr_args
+       lowranceusr_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 719ea0aabd322cd15c82fd4c54b52d3c316e4685..9a24d4198ca4b3d1704c030c72ebbbc2d489a17e 100644 (file)
@@ -111,7 +111,7 @@ append(char *buf, const char *str)
                return;
        }
 
-       cleansed1 = str_utf8_to_ascii(str);
+       cleansed1 = xstrdup(str);
        cleansed2 = m330_cleanse(cleansed1);
 
        strcat(buf, cleansed2);
@@ -235,4 +235,7 @@ ff_vecs_t maggeo_vecs = {
        maggeo_wr_deinit,
        maggeo_read,
        maggeo_write,
+       NULL,
+       NULL,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index ebd432a47b866116f1f3d9da39c33686ccd7be8d..0e07af7e86f664796497f11703243effecfab776 100644 (file)
@@ -270,5 +270,7 @@ ff_vecs_t magnav_vec = {
        wr_deinit,
        data_read,
        data_write,
-       NULL
+       NULL,
+       NULL,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index ec96fca441528a2e691a72f93659f81e323a7a3b..f252e9da87aeb6589fa2c3269d15d3a83c4f92da 100644 (file)
@@ -1440,7 +1440,8 @@ ff_vecs_t mag_svecs = {
        mag_read,
        mag_write,
        NULL, 
-       mag_sargs
+       mag_sargs,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
 
 ff_vecs_t mag_fvecs = {
@@ -1453,7 +1454,8 @@ ff_vecs_t mag_fvecs = {
        mag_read,
        mag_write,
        NULL, 
-       mag_fargs
+       mag_fargs,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
 
 /*
@@ -1468,5 +1470,7 @@ ff_vecs_t magX_fvecs = {
        mag_deinit,     
        mag_read,
        mag_write,
-       NULL, 
+       NULL,
+       NULL,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 01e0adaac5facbbdc8ed85a22ee42d280e9a2c76..3806061b6e2c3a34a19b3e61372eeb899828f120 100644 (file)
@@ -19,6 +19,8 @@
 
 
 #include "defs.h"
+#include "cet.h"
+#include "cet_util.h"
 #include <ctype.h>
 
 global_options global_opts;
@@ -53,9 +55,11 @@ usage(const char *pname, int shorter)
 "    -r               Process route information\n"
 "    -t               Process track information\n"
 "    -w               Process waypoint information [default]\n"
+"    -c               Character set for next operation\n"
 "    -N               No smart icons on output\n"
 "    -x filtername    Invoke filter (place between inputs and output) \n"
 "    -D level         Set debug level [%d]\n"
+"    -l               Print GPSBabel builtin character sets and exit\n"
 "    -h, -?           Print detailed help and exit\n"
 "    -V               Print GPSBabel version and exit\n"
 "\n"
@@ -93,9 +97,13 @@ main(int argc, char *argv[])
        int opt_version = 0;
        int did_something = 0;
        const char *prog_name = argv[0]; /* argv is modified during processing */
+       queue *wpt_head_bak, *rte_head_bak, *trk_head_bak;      /* #ifdef UTF8_SUPPORT */
+       unsigned int wpt_ct_bak, rte_ct_bak, trk_ct_bak;        /* #ifdef UTF8_SUPPORT */
 
        global_opts.objective = wptdata;
        global_opts.masked_objective = NOTHINGMASK;     /* this makes the default mask behaviour slightly different */
+       global_opts.charset = NULL;                     /* #ifdef UTF8_SUPPORT */
+       global_opts.charset_name = NULL;                        /* #ifdef UTF8_SUPPORT */
 
 #ifdef DEBUG_MEM
        debug_mem_open();
@@ -106,6 +114,7 @@ main(int argc, char *argv[])
        debug_mem_output( "\n" );
 #endif
        
+       cet_register();
        waypt_init();
        route_init();
 
@@ -144,6 +153,10 @@ main(int argc, char *argv[])
                }
 
                switch (c) {
+                       case 'c':
+                               optarg = argv[argn][2] ? argv[argn]+2 : argv[++argn];
+                               cet_convert_init(optarg, 1);
+                               break;
                        case 'i': 
                                optarg = argv[argn][2]
                                        ? argv[argn]+2 : argv[++argn];
@@ -169,9 +182,16 @@ main(int argc, char *argv[])
                                }
                                /* simulates the default behaviour of waypoints */
                                if (doing_nothing) global_opts.masked_objective |= WPTDATAMASK;
+                       
+                               cet_convert_init(ivecs->encode, ivecs->fixed_encode);   /* init by module vec */
+
                                ivecs->rd_init(fname);
                                ivecs->read();
                                ivecs->rd_deinit();
+                               
+                               cet_convert_strings(global_opts.charset, NULL, NULL);
+                               cet_convert_deinit();
+                               
                                did_something = 1;
                                break;
                        case 'F':
@@ -185,9 +205,31 @@ main(int argc, char *argv[])
                                        if (ovecs->wr_init == NULL) {
                                                fatal ("Format does not support writing.\n");
                                        }
+                                       
+                                       cet_convert_init(ovecs->encode, ovecs->fixed_encode);
+
+                                       wpt_ct_bak = -1;
+                                       rte_ct_bak = -1;
+                                       trk_ct_bak = -1;
+
+                                       if (global_opts.charset != &cet_cs_vec_utf8)
+                                       {
+                                           waypt_backup(&wpt_ct_bak, &wpt_head_bak);
+                                           route_backup(&rte_ct_bak, &rte_head_bak);
+                                           track_backup(&trk_ct_bak, &trk_head_bak);
+                                           
+                                           cet_convert_strings(NULL, global_opts.charset, NULL);
+                                       }
+
                                        ovecs->wr_init(ofname);
                                        ovecs->write();
                                        ovecs->wr_deinit();
+                                       
+                                       cet_convert_deinit();
+                                       
+                                       if (wpt_ct_bak != -1) waypt_restore(wpt_ct_bak, wpt_head_bak);
+                                       if (rte_ct_bak != -1) route_restore(rte_ct_bak, rte_head_bak);
+                                       if (trk_ct_bak != -1) track_restore(trk_ct_bak, trk_head_bak);
                                }
                                break;
                        case 's':
@@ -270,6 +312,10 @@ main(int argc, char *argv[])
                        case '?':
                                usage(argv[0],0);
                                exit(0);
+                       case 'l':
+                               cet_disp_character_set_names(stdout);
+                               exit(0);
+
                }
        }
 
@@ -286,13 +332,26 @@ main(int argc, char *argv[])
                did_something = 1;
                /* simulates the default behaviour of waypoints */
                if (doing_nothing) global_opts.masked_objective |= WPTDATAMASK;
+                                       
+               cet_convert_init(ivecs->encode, 1);
+
                ivecs->rd_init(argv[0]);
                ivecs->read();
                ivecs->rd_deinit();
-               if (argc == 2 && ovecs) {
+               
+               cet_convert_strings(global_opts.charset, NULL, NULL);
+               cet_convert_deinit();
+               
+               if (argc == 2 && ovecs) 
+               {
+                       cet_convert_init(ovecs->encode, 1);
+                       cet_convert_strings(NULL, global_opts.charset, NULL);
+                       
                        ovecs->wr_init(argv[1]);
                        ovecs->write();
                        ovecs->wr_deinit();
+                       
+                       cet_convert_deinit();
                }
        }
        else if (argc) {
@@ -300,11 +359,16 @@ main(int argc, char *argv[])
                exit(0);
        }
        if (ovecs == NULL)
+       {
+               cet_convert_init(CET_CHARSET_ASCII, 1);
+               cet_convert_strings(NULL, global_opts.charset, NULL);
                waypt_disp_all(waypt_disp);
+       }
 
        if (!did_something)
                fatal ("Nothing to do!  Use '%s -h' for command-line options.\n", prog_name);
 
+       cet_deregister();
        waypt_flush_all();
        route_flush_all();
        exit_vecs();
index 40b7e97c1eaa97b138690fe7eabad0875253ad6a..db036ebbdfaa3cdf23d5f5dbf7b3a3cd329e8328 100644 (file)
@@ -335,14 +335,14 @@ mapsend_waypt_pr(const waypoint *waypointp)
         * them into the Mapsend file.
         */
 
-       tmp = str_utf8_to_ascii(sn);
+       tmp = xstrdup(sn);
        c = tmp ? strlen(tmp) : 0;
        fwrite(&c, 1, 1, mapsend_file_out);
        fwrite(tmp, c, 1, mapsend_file_out);
        if (tmp)
                xfree(tmp);
 
-       tmp = str_utf8_to_ascii(waypointp->description);
+       tmp = waypointp->description;
        if (tmp)
                c = strlen(tmp);
        else
@@ -351,8 +351,6 @@ mapsend_waypt_pr(const waypoint *waypointp)
        if (c > 30) c = 30;
        fwrite(&c, 1, 1, mapsend_file_out);
        fwrite(tmp, c, 1, mapsend_file_out);
-       if (tmp)
-               xfree(tmp);
 
        /* #, icon, status */
        n = ++cnt;
@@ -613,5 +611,7 @@ ff_vecs_t mapsend_vecs = {
        mapsend_wr_deinit,
        mapsend_read,
        mapsend_wpt_write,
-       NULL
+       NULL,
+       NULL,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 0ba7bd83b5ce6af8c62dfbd9eb634f8f6f5a30b5..3fc38cad8b8f4b2f0be92a409fb806236c1652a3 100644 (file)
@@ -690,7 +690,7 @@ mps_waypoint_w(FILE *mps_file, int mps_ver, const waypoint *wpt, const int isRou
        icon = mps_converted_icon_number(icon, mps_ver, MAPSOURCE);
 
        /* two NULL (0x0) bytes at end of each string */
-       ascii_description = wpt->description ? str_utf8_to_ascii(wpt->description) : xstrdup("");
+       ascii_description = wpt->description ? xstrdup(wpt->description) : xstrdup("");
        reclen = strlen(ident) + strlen(ascii_description) + 2; 
        if ((mps_ver == 4) || (mps_ver == 5)) {
                /* v4.06 & V5.0*/
@@ -2179,5 +2179,6 @@ ff_vecs_t mps_vecs = {
        mps_read,
        mps_write,
        NULL,
-       mps_args
+       mps_args,
+       CET_CHARSET_MS_ANSI     /* CET-REVIEW */
 };
index c829b1c9c5375abe74089bf76d098ee1e670a6a9..a2477749cff5ca9e2593bdcc56c678803b56e460 100644 (file)
@@ -17,6 +17,7 @@
 
  */
 #include "defs.h"
+#include "cet_util.h"
 #if !NO_EXPAT
 #include <expat.h>
 static XML_Parser psr;
@@ -208,6 +209,7 @@ nav_rd_init(const char *fname)
                fatal(MYNAME ":Cannot create XML parser\n");
        }
 
+       XML_SetUnknownEncodingHandler(psr, cet_lib_expat_UnknownEncodingHandler, NULL);
        XML_SetElementHandler(psr, nav_start, nav_end);
 }
 
@@ -265,4 +267,5 @@ ff_vecs_t navicache_vecs = {
        nav_write,
        NULL, 
        nav_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 554d513b2529d2d16883b3393952ea2c2e696708..aa0d52b7dfa8c877386ae892f36ebd11fda61830 100644 (file)
@@ -301,5 +301,6 @@ ff_vecs_t netstumbler_vecs = {
        data_read,
        NULL,
        NULL,
-       netstumbler_args
+       netstumbler_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 11515d3df5fe1adb9587047681a1d6dd55b8626c..1fae20fec150d2091163d83091803b09c97dc992 100644 (file)
@@ -683,5 +683,6 @@ ff_vecs_t nmea_vecs = {
        nmea_read,
        nmea_write,
        NULL,
-       nmea_args
+       nmea_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index b6b69518b8af123655e4582467e302bc961c5c6e..4f668e589ff2b5a35495ca4d9bba3b6f69cce1af 100644 (file)
@@ -698,5 +698,6 @@ ff_vecs_t overlay_vecs = {
        ovl_read,
        ovl_write,
         NULL,
-       ovl_args
+       ovl_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index b655f61a2c6a926561d1aadcb0bc112c2bedbf14..c6049891a4a714aebb3f5c9e3b57a9bad654e4e1 100644 (file)
@@ -707,5 +707,6 @@ ff_vecs_t ozi_vecs = {
     data_read,
     data_write,
     NULL,
-    ozi_args
+    ozi_args,
+    CET_CHARSET_ASCII, 0       /* CET-REVIEW */
 };
index 8a50546459e529b7ebfa80ce38f52b372d79d362..5e839e2e8ac8bfa09a85a7e6b989f8f3e1122b07 100644 (file)
@@ -623,7 +623,8 @@ ff_vecs_t palmdoc_vecs = {
        NULL,
        data_write,
        NULL, 
-       palmdoc_args
+       palmdoc_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
 
 
index ab85b0cf25de04df89d7c843e027ac45c4aef2dc..8d9a8db099d9dc9b195a25ae40d992cc537bec3a 100644 (file)
@@ -697,5 +697,6 @@ ff_vecs_t ppdb_vecs = {
        ppdb_read,
        ppdb_write,
        NULL, 
-       ppdb_args
+       ppdb_args,
+       "ISO-8859-1"
 };
index 1bafae196b99952c28b53165adac12b0aa5899d5..4fe7f42d6562ae6b6f47a1b5f80776178d8d7ca7 100644 (file)
@@ -274,5 +274,6 @@ ff_vecs_t pcx_vecs = {
        data_read,
        data_write,
        NULL,
-       pcx_args
+       pcx_args,
+       CET_CHARSET_ASCII, 1    /* CET-REVIEW */
 };
index 9c3da7da92f6e142e51420627a5bd32db3ba2834..6f0a8d6b6c13f71e6a0dc4abfdfc4ee7fde673b2 100755 (executable)
@@ -794,5 +794,6 @@ ff_vecs_t psit_vecs = {
        psit_read,
        psit_write,
        NULL, 
-       psit_args
+       psit_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index b3a04e65097e908b6986c02e3fdbd49c6ff95d4b..dc66048f83f3fa98ad086c53bc1efbdfa4f3f2e6 100644 (file)
@@ -21,6 +21,7 @@
  */
 
 #include "defs.h"
+#include "cet_util.h"
 #include <ctype.h>
 
 #define MYNAME "PSP"
@@ -154,6 +155,7 @@ valid_psp_header(char * header)
 static char *
 buffer_washer(char * buff, int buffer_len)
 {
+/* original code
     int i;
 
     for (i = 0 ; i < buffer_len - 1; i++) {
@@ -164,6 +166,11 @@ buffer_washer(char * buff, int buffer_len)
        }
     }
 
+    return (buff);
+*/
+    char *c = cet_str_uni_to_any((const short *)buff, buffer_len >> 1, global_opts.charset);
+    strncpy(buff, c, buffer_len);
+    xfree(c);
     return (buff);
 }
 
@@ -466,5 +473,7 @@ ff_vecs_t psp_vecs = {
        psp_wr_deinit,
        psp_read,
        psp_write,
-       NULL
+       NULL,
+       NULL,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index e71eda8921da3dd3af43ab580959a5a9e378d565..455d010a0a09ea697134037e3b5b00b6c7d61531 100644 (file)
@@ -293,5 +293,6 @@ ff_vecs_t quovadis_vecs = {
        data_read,
        data_write,
        NULL, 
-       quovadis_args
+       quovadis_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
diff --git a/gpsbabel/reference/cet/cet-sample.cp1250.txt b/gpsbabel/reference/cet/cet-sample.cp1250.txt
new file mode 100644 (file)
index 0000000..0a59e0b
--- /dev/null
@@ -0,0 +1,17 @@
+Group  sID     sDescription    fLat    fLong   fEasting        fNorthing       fAlt    iColour iSymbol sHyperLink
+new    01      Hohndorf        50.738297       12.683029                       -99999999.00    255     1       (null)
+new    0x9E    \9e - latin small letter z with caron     50.497971       13.027725                       -99999999.00    255     1       (null)
+new    0xC9    Ã‰ - latin capital letter e with circumflex      50.497971       13.027725                       -99999999.00    255     1       (null)
+new    0xF0    Ã° - latin small letter eth (icelandic)  50.497971       13.027725                       -99999999.00    255     1       (null)
+new    CS      Ovládací Prohlí\9eení lokální síte        50.514406       13.638634                       -99999999.00    255     1       (null)
+new    DA      TÃ¥ning netværkssøgning Ã¡Ã¢Ã£Ã¤Ã¥Ã¦Ã©Ã« 56.011734       9.847870                        -99999999.00    255     1       (null)
+new    DE      Himmelmühle Ã¤Ã¶Ã¼Ã„ÖÜß     50.625865       13.060611                       -99999999.00    255     1       (null)
+new    EO      Trasercado de la loka ret       50.495281       13.027645                       -99999999.00    255     1       (null)
+new    ES      Matalascañas Navegación Táliga  37.007446       -6.558838                       -99999999.00    255     1       (null)
+new    FR      Boissière-École Contrôle  réseau Mâle   48.679047       1.652069                        -99999999.00    255     1       (null)
+new    HR      Pregledavanje lokalne mre\9ee     50.477937       12.510391                       -99999999.00    255     1       (null)
+new    HU      Hõgyész Vezérlõközpont Hálózat  46.491394       18.424072                       -99999999.00    255     1       (null)
+new    IS      Borgarfjörður   65.522461       -13.823547                      -99999999.00    255     1       (null)
+new    SK      Ovládacie centrum       50.724214       13.524871                       -99999999.00    255     1       (null)
+new    X1      \9eðÉéÀàÈèÙùÂâÊêÎîÄäËëÖöÜüÆæÅ娸ÇçÑñ²³½É× 50.497971       13.027725                       -99999999.00    255     1       (null)
+new    X2      \9eðÉéÀàÈèÙùÂâÊêÎîÄäËëÖöÜüÆæÅ娸ÇçÑñ²³½É× 50.497971       13.027725                       -99999999.00    255     1       (null)
diff --git a/gpsbabel/reference/cet/cet-sample.gdb b/gpsbabel/reference/cet/cet-sample.gdb
new file mode 100644 (file)
index 0000000..dab0140
Binary files /dev/null and b/gpsbabel/reference/cet/cet-sample.gdb differ
diff --git a/gpsbabel/reference/cet/cet-sample.gpx b/gpsbabel/reference/cet/cet-sample.gpx
new file mode 100644 (file)
index 0000000..9122e59
--- /dev/null
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx
+ version="1.0"
+creator="GPSBabel - http://www.gpsbabel.org"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xmlns="http://www.topografix.com/GPX/1/0"
+xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
+<time>1970-01-01T00:00:00Z</time>
+<bounds minlat="37.007446289" minlon ="-13.823547363" maxlat="65.522460938" maxlon="18.424072266" />
+<wpt lat="50.738296509" lon="12.683029175">
+<time>2005-07-14T10:12:49Z</time>
+  <name>01</name>
+  <cmt>Hohndorf</cmt>
+  <desc>Hohndorf</desc>
+  <sym>City (Small)</sym>
+</wpt>
+<wpt lat="50.497970581" lon="13.027725220">
+<time>2005-07-14T14:04:15Z</time>
+  <name>0x9E</name>
+  <cmt>ž - latin small letter z with caron</cmt>
+  <desc>ž - latin small letter z with caron</desc>
+  <sym>City (Small)</sym>
+</wpt>
+<wpt lat="50.497970581" lon="13.027725220">
+<time>2005-07-14T14:07:22Z</time>
+  <name>0xC9</name>
+  <cmt>É - latin capital letter e with circumflex</cmt>
+  <desc>É - latin capital letter e with circumflex</desc>
+  <sym>City (Small)</sym>
+</wpt>
+<wpt lat="50.497970581" lon="13.027725220">
+<time>2005-07-14T14:06:05Z</time>
+  <name>0xF0</name>
+  <cmt>ð - latin small letter eth (icelandic)</cmt>
+  <desc>ð - latin small letter eth (icelandic)</desc>
+  <sym>City (Small)</sym>
+</wpt>
+<wpt lat="50.514405901" lon="13.638633778">
+<time>2005-07-14T10:43:00Z</time>
+  <name>CS</name>
+  <cmt>Ovládací, Prohlížení lokální síte</cmt>
+  <desc> Czechia (cz) </desc>
+  <sym>Waypoint</sym>
+</wpt>
+<wpt lat="56.011734009" lon="9.847869873">
+<time>2005-07-14T09:48:47Z</time>
+  <name>DA</name>
+  <cmt>TÃ¥ning, netværkssøgning, Ã¡Ã¢Ã£Ã¤Ã¥Ã¦Ã©Ã«</cmt>
+  <desc>TÃ¥ning, netværkssøgning, Ã¡Ã¢Ã£Ã¤Ã¥Ã¦Ã©Ã«</desc>
+  <sym>Waypoint</sym>
+</wpt>
+<wpt lat="50.625865096" lon="13.060610946">
+<time>2005-07-14T09:41:43Z</time>
+  <name>DE</name>
+  <cmt>Himmelmühle, Ã¤,ö,ü,Ä,Ö,Ü,ß</cmt>
+  <desc>ermany (de)</desc>
+  <sym>Waypoint</sym>
+</wpt>
+<wpt lat="50.495280828" lon="13.027644670">
+<time>2005-07-14T13:20:14Z</time>
+  <name>EO</name>
+  <cmt>Trasercado de la loka ret</cmt>
+  <desc>?? (oe)</desc>
+  <sym>Waypoint</sym>
+</wpt>
+<wpt lat="37.007446289" lon="-6.558837891">
+<time>2005-07-14T09:39:12Z</time>
+  <name>ES</name>
+  <cmt>Matalascañas, Navegación, Táliga</cmt>
+  <desc>Matalascañas, Navegación, Táliga</desc>
+  <sym>Waypoint</sym>
+</wpt>
+<wpt lat="48.679046631" lon="1.652069092">
+<time>2005-07-14T09:39:17Z</time>
+  <name>FR</name>
+  <cmt>Boissière-École, Contrôle,  réseau, Mâle</cmt>
+  <desc>Boissière-École, Contrôle,  réseau, Mâle</desc>
+  <sym>Waypoint</sym>
+</wpt>
+<wpt lat="50.477937413" lon="12.510390887">
+<time>2005-07-14T09:28:22Z</time>
+  <name>HR</name>
+  <cmt>Pregledavanje lokalne mreže</cmt>
+  <desc>roatia (local name: Hrvatska) (hr)</desc>
+  <sym>Waypoint</sym>
+</wpt>
+<wpt lat="46.491394043" lon="18.424072266">
+<time>2005-07-14T09:43:42Z</time>
+  <name>HU</name>
+  <cmt>Hõgyész, Vezérlõközpont, Hálózat</cmt>
+  <desc>Hõgyész, Vezérlõközpont, Hálózat</desc>
+  <sym>City (Small)</sym>
+</wpt>
+<wpt lat="65.522460938" lon="-13.823547363">
+<time>2005-07-14T09:39:22Z</time>
+  <name>IS</name>
+  <cmt>Borgarfjörður</cmt>
+  <desc>Borgarfjörður</desc>
+  <sym>Waypoint</sym>
+</wpt>
+<wpt lat="50.724214325" lon="13.524870649">
+<time>2005-07-14T09:34:53Z</time>
+  <name>SK</name>
+  <cmt>Ovládacie centrum</cmt>
+  <desc>ei D09544,Neuhausen/Cämmerswalde</desc>
+  <sym>Waypoint</sym>
+</wpt>
+<wpt lat="50.497970581" lon="13.027725220">
+<time>2005-07-14T11:17:31Z</time>
+  <name>X1</name>
+  <cmt>žðÉéÀàÈèÙùÂâÊêÎîÄäËëÖöÜüÆæÅ娸ÇçÑñ²³½É×</cmt>
+  <desc>žðÉéÀàÈèÙùÂâÊêÎîÄäËëÖöÜüÆæÅ娸ÇçÑñ²³½É×</desc>
+  <sym>Diamond, Blue</sym>
+</wpt>
+<wpt lat="50.497970581" lon="13.027725220">
+<time>2005-07-14T11:18:06Z</time>
+  <name>X2</name>
+  <cmt>žðÉéÀàÈèÙùÂâÊêÎîÄäËëÖöÜüÆæÅ娸ÇçÑñ²³½É×</cmt>
+  <desc>žðÉéÀàÈèÙùÂâÊêÎîÄäËëÖöÜüÆæÅ娸ÇçÑñ²³½É×</desc>
+  <sym>Diamond, Blue</sym>
+</wpt>
+</gpx>
diff --git a/gpsbabel/reference/cet/cet-sample.latin1.txt b/gpsbabel/reference/cet/cet-sample.latin1.txt
new file mode 100644 (file)
index 0000000..f7cf4ef
--- /dev/null
@@ -0,0 +1,17 @@
+Group  sID     sDescription    fLat    fLong   fEasting        fNorthing       fAlt    iColour iSymbol sHyperLink
+new    01      Hohndorf        50.738297       12.683029                       -99999999.00    255     1       (null)
+new    0x9E    $ - latin small letter z with caron     50.497971       13.027725                       -99999999.00    255     1       (null)
+new    0xC9    Ã‰ - latin capital letter e with circumflex      50.497971       13.027725                       -99999999.00    255     1       (null)
+new    0xF0    Ã° - latin small letter eth (icelandic)  50.497971       13.027725                       -99999999.00    255     1       (null)
+new    CS      Ovládací Prohlí$ení lokální síte        50.514406       13.638634                       -99999999.00    255     1       (null)
+new    DA      TÃ¥ning netværkssøgning Ã¡Ã¢Ã£Ã¤Ã¥Ã¦Ã©Ã« 56.011734       9.847870                        -99999999.00    255     1       (null)
+new    DE      Himmelmühle Ã¤Ã¶Ã¼Ã„ÖÜß     50.625865       13.060611                       -99999999.00    255     1       (null)
+new    EO      Trasercado de la loka ret       50.495281       13.027645                       -99999999.00    255     1       (null)
+new    ES      Matalascañas Navegación Táliga  37.007446       -6.558838                       -99999999.00    255     1       (null)
+new    FR      Boissière-École Contrôle  réseau Mâle   48.679047       1.652069                        -99999999.00    255     1       (null)
+new    HR      Pregledavanje lokalne mre$e     50.477937       12.510391                       -99999999.00    255     1       (null)
+new    HU      Hõgyész Vezérlõközpont Hálózat  46.491394       18.424072                       -99999999.00    255     1       (null)
+new    IS      Borgarfjörður   65.522461       -13.823547                      -99999999.00    255     1       (null)
+new    SK      Ovládacie centrum       50.724214       13.524871                       -99999999.00    255     1       (null)
+new    X1      $ðÉéÀàÈèÙùÂâÊêÎîÄäËëÖöÜüÆæÅ娸ÇçÑñ²³½É× 50.497971       13.027725                       -99999999.00    255     1       (null)
+new    X2      $ðÉéÀàÈèÙùÂâÊêÎîÄäËëÖöÜüÆæÅ娸ÇçÑñ²³½É× 50.497971       13.027725                       -99999999.00    255     1       (null)
diff --git a/gpsbabel/reference/cet/cet-sample.latin2.txt b/gpsbabel/reference/cet/cet-sample.latin2.txt
new file mode 100644 (file)
index 0000000..a10be2a
--- /dev/null
@@ -0,0 +1,17 @@
+Group  sID     sDescription    fLat    fLong   fEasting        fNorthing       fAlt    iColour iSymbol sHyperLink
+new    01      Hohndorf        50.738297       12.683029                       -99999999.00    255     1       (null)
+new    0x9E    Â¾ - latin small letter z with caron     50.497971       13.027725                       -99999999.00    255     1       (null)
+new    0xC9    Ã‰ - latin capital letter e with circumflex      50.497971       13.027725                       -99999999.00    255     1       (null)
+new    0xF0    Ã° - latin small letter eth (icelandic)  50.497971       13.027725                       -99999999.00    255     1       (null)
+new    CS      Ovládací Prohlí¾ení lokální síte        50.514406       13.638634                       -99999999.00    255     1       (null)
+new    DA      TÃ¥ning netværkssøgning Ã¡Ã¢Ã£Ã¤Ã¥Ã¦Ã©Ã« 56.011734       9.847870                        -99999999.00    255     1       (null)
+new    DE      Himmelmühle Ã¤Ã¶Ã¼Ã„ÖÜß     50.625865       13.060611                       -99999999.00    255     1       (null)
+new    EO      Trasercado de la loka ret       50.495281       13.027645                       -99999999.00    255     1       (null)
+new    ES      Matalascañas Navegación Táliga  37.007446       -6.558838                       -99999999.00    255     1       (null)
+new    FR      Boissière-École Contrôle  réseau Mâle   48.679047       1.652069                        -99999999.00    255     1       (null)
+new    HR      Pregledavanje lokalne mre¾e     50.477937       12.510391                       -99999999.00    255     1       (null)
+new    HU      Hõgyész Vezérlõközpont Hálózat  46.491394       18.424072                       -99999999.00    255     1       (null)
+new    IS      Borgarfjörður   65.522461       -13.823547                      -99999999.00    255     1       (null)
+new    SK      Ovládacie centrum       50.724214       13.524871                       -99999999.00    255     1       (null)
+new    X1      Â¾Ã°Ã‰Ã©Ã€Ã ÃˆÃ¨Ã™Ã¹Ã‚âÊêÎîÄäËëÖöÜüÆæÅ娸ÇçÑñ²³½É× 50.497971       13.027725                       -99999999.00    255     1       (null)
+new    X2      Â¾Ã°Ã‰Ã©Ã€Ã ÃˆÃ¨Ã™Ã¹Ã‚âÊêÎîÄäËëÖöÜüÆæÅ娸ÇçÑñ²³½É× 50.497971       13.027725                       -99999999.00    255     1       (null)
diff --git a/gpsbabel/reference/cet/cet-sample.macroman.txt b/gpsbabel/reference/cet/cet-sample.macroman.txt
new file mode 100644 (file)
index 0000000..75cfcd7
--- /dev/null
@@ -0,0 +1,17 @@
+Group  sID     sDescription    fLat    fLong   fEasting        fNorthing       fAlt    iColour iSymbol sHyperLink
+new    01      Hohndorf        50.738297       12.683029                       -99999999.00    255     1       (null)
+new    0x9E    $ - latin small letter z with caron     50.497971       13.027725                       -99999999.00    255     1       (null)
+new    0xC9    \83 - latin capital letter e with circumflex      50.497971       13.027725                       -99999999.00    255     1       (null)
+new    0xF0    Ã° - latin small letter eth (icelandic)  50.497971       13.027725                       -99999999.00    255     1       (null)
+new    CS      Ovl\87dac\92 Prohl\92$en\92 lok\87ln\92 s\92te        50.514406       13.638634                       -99999999.00    255     1       (null)
+new    DA      T\8cning netv¾rkss¿gning \87\89\8b\8a\8c¾\8e\91 56.011734       9.847870                        -99999999.00    255     1       (null)
+new    DE      Himmelm\9fhle \8a\9a\9f\80\85\86§     50.625865       13.060611                       -99999999.00    255     1       (null)
+new    EO      Trasercado de la loka ret       50.495281       13.027645                       -99999999.00    255     1       (null)
+new    ES      Matalasca\96as Navegaci\97n T\87liga  37.007446       -6.558838                       -99999999.00    255     1       (null)
+new    FR      Boissi\8fre-\83cole Contr\99le  r\8eseau M\89le   48.679047       1.652069                        -99999999.00    255     1       (null)
+new    HR      Pregledavanje lokalne mre$e     50.477937       12.510391                       -99999999.00    255     1       (null)
+new    HU      H\9bgy\8esz Vez\8erl\9bk\9azpont H\87l\97zat  46.491394       18.424072                       -99999999.00    255     1       (null)
+new    IS      Borgarfj\9arður   65.522461       -13.823547                      -99999999.00    255     1       (null)
+new    SK      Ovl\87dacie centrum       50.724214       13.524871                       -99999999.00    255     1       (null)
+new    X1      $ð\83\8eË\88é\8fô\9dÃ¥\89æ\90ë\94\80\8aè\91\85\9a\86\9f®¾\81\8c¯¿\82\8d\84\96²³½\83× 50.497971       13.027725                       -99999999.00    255     1       (null)
+new    X2      $ð\83\8eË\88é\8fô\9dÃ¥\89æ\90ë\94\80\8aè\91\85\9a\86\9f®¾\81\8c¯¿\82\8d\84\96²³½\83× 50.497971       13.027725                       -99999999.00    255     1       (null)
index 969fcc283d2d19a2f84ccd8d884882e4bf492f9e..201b69e12c155c30ffab555f2da4f86890377c3a 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <gpx
  version="1.0"
 creator="GPSBabel - http://www.gpsbabel.org"
@@ -13,7 +13,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
   <desc>B2 Hofer Strasse</desc>
 </wpt>
 <wpt lat="50.393720000" lon="11.867560000">
-  <name>bei D 95183 T&#xf6;pen </name>
+  <name>bei D 95183 Töpen </name>
   <cmt>B2\Hofer Strasse</cmt>
   <desc>B2\Hofer Strasse</desc>
 </wpt>
@@ -43,12 +43,12 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
   <desc>L2357</desc>
 </wpt>
 <wpt lat="50.558740000" lon="11.736880000">
-  <name>bei D 07907 Schleiz/M&#xf6;schlitz </name>
+  <name>bei D 07907 Schleiz/Möschlitz </name>
   <cmt>L2357</cmt>
   <desc>L2357</desc>
 </wpt>
 <wpt lat="50.608090000" lon="11.653350000">
-  <name>bei D 07924 Ziegenr&#xfc;ck </name>
+  <name>bei D 07924 Ziegenrück </name>
   <cmt>L2350\Plothental</cmt>
   <desc>L2350\Plothental</desc>
 </wpt>
@@ -64,13 +64,13 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
 </wpt>
 <wpt lat="50.568210000" lon="11.907330000">
   <name>bei D 07907 Schleiz/Langenbuch </name>
-  <cmt>K304\L&#xf6;ssauer Strasse</cmt>
-  <desc>K304\L&#xf6;ssauer Strasse</desc>
+  <cmt>K304\Lössauer Strasse</cmt>
+  <desc>K304\Lössauer Strasse</desc>
 </wpt>
 <wpt lat="50.575210000" lon="11.991270000">
   <name>bei D 07952 Pausa/Oberreichenau </name>
-  <cmt>S316\Am M&#xfc;hlgraben</cmt>
-  <desc>S316\Am M&#xfc;hlgraben</desc>
+  <cmt>S316\Am Mühlgraben</cmt>
+  <desc>S316\Am Mühlgraben</desc>
 </wpt>
 <wpt lat="50.541330000" lon="12.081960000">
   <name>bei D 08548 Syrau </name>
@@ -78,7 +78,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
   <desc>B282/E49\Hauptstrasse</desc>
 </wpt>
 <wpt lat="50.504660000" lon="12.142140000">
-  <name>bei D 08525 Plauen/Prei&#xdf;elp&#xf6;hl </name>
+  <name>bei D 08525 Plauen/Preißelpöhl </name>
   <cmt>Martin-Luther-Strasse</cmt>
   <desc>Martin-Luther-Strasse</desc>
 </wpt>
@@ -88,14 +88,14 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
   <desc>B173\Hauptstrasse</desc>
 </wpt>
 <wpt lat="50.546070000" lon="12.218730000">
-  <name>bei D 08543 P&#xf6;hl/Helmsgr&#xfc;n </name>
-  <cmt>K7880\Helmsgr&#xfc;n-Dorfstrasse</cmt>
-  <desc>K7880\Helmsgr&#xfc;n-Dorfstrasse</desc>
+  <name>bei D 08543 Pöhl/Helmsgrün </name>
+  <cmt>K7880\Helmsgrün-Dorfstrasse</cmt>
+  <desc>K7880\Helmsgrün-Dorfstrasse</desc>
 </wpt>
 <wpt lat="50.566740000" lon="12.226250000">
-  <name>bei D 08543 Herlasgr&#xfc;n </name>
-  <cmt>K7811\Herlasgr&#xfc;n-Dorfstrasse</cmt>
-  <desc>K7811\Herlasgr&#xfc;n-Dorfstrasse</desc>
+  <name>bei D 08543 Herlasgrün </name>
+  <cmt>K7811\Herlasgrün-Dorfstrasse</cmt>
+  <desc>K7811\Herlasgrün-Dorfstrasse</desc>
 </wpt>
 <wpt lat="50.624630000" lon="12.202870000">
   <name>bei D 07985 Elsterberg/Reuth </name>
@@ -128,7 +128,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
   <desc>B173</desc>
 </wpt>
 <wpt lat="50.676090000" lon="12.405090000">
-  <name>D 08115 Sch&#xf6;nfels </name>
+  <name>D 08115 Schönfels </name>
   <cmt>K9351\Zwickauer Strasse</cmt>
   <desc>K9351\Zwickauer Strasse</desc>
 </wpt>
@@ -154,23 +154,23 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
 </wpt>
 <wpt lat="50.508270000" lon="12.397900000">
   <name>bei D 08209 Auerbach </name>
-  <cmt>B169\G&#xf6;ltzschtalstrasse</cmt>
-  <desc>B169\G&#xf6;ltzschtalstrasse</desc>
+  <cmt>B169\Göltzschtalstrasse</cmt>
+  <desc>B169\Göltzschtalstrasse</desc>
 </wpt>
 <wpt lat="50.479200000" lon="12.424870000">
   <name>bei D 08209 Auerbach/Beerheide </name>
-  <cmt>K7833\Rempesgr&#xfc;ner Strasse</cmt>
-  <desc>K7833\Rempesgr&#xfc;ner Strasse</desc>
+  <cmt>K7833\Rempesgrüner Strasse</cmt>
+  <desc>K7833\Rempesgrüner Strasse</desc>
 </wpt>
 <wpt lat="50.503030000" lon="12.533360000">
-  <name>D 08304 Sch&#xf6;nheide </name>
+  <name>D 08304 Schönheide </name>
   <cmt>S278\Hauptstrasse</cmt>
   <desc>S278\Hauptstrasse</desc>
 </wpt>
 <wpt lat="50.458250000" lon="12.488440000">
-  <name>bei D 08262 Tannenbergsthal/J&#xe4;gersgr&#xfc;n </name>
-  <cmt>B283\Sch&#xf6;nheider Strasse</cmt>
-  <desc>B283\Sch&#xf6;nheider Strasse</desc>
+  <name>bei D 08262 Tannenbergsthal/Jägersgrün </name>
+  <cmt>B283\Schönheider Strasse</cmt>
+  <desc>B283\Schönheider Strasse</desc>
 </wpt>
 <wpt lat="50.434530000" lon="12.461120000">
   <name>bei D 08262 Tannenbergsthal </name>
@@ -178,22 +178,22 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
   <desc>B283\Klingenthaler Strasse</desc>
 </wpt>
 <wpt lat="50.384530000" lon="12.456220000">
-  <name>bei D 08248 Klingenthal/Brunnd&#xf6;bra </name>
+  <name>bei D 08248 Klingenthal/Brunndöbra </name>
   <cmt>S304\Falkensteiner Strasse</cmt>
   <desc>S304\Falkensteiner Strasse</desc>
 </wpt>
 <wpt lat="50.419640000" lon="12.399730000">
-  <name>bei D 08223 Gr&#xfc;nbach-Muldenberg </name>
+  <name>bei D 08223 Grünbach-Muldenberg </name>
   <cmt>S302/S304</cmt>
   <desc>S302/S304</desc>
 </wpt>
 <wpt lat="50.446180000" lon="12.364590000">
-  <name>bei D 08223 Gr&#xfc;nbach </name>
+  <name>bei D 08223 Grünbach </name>
   <cmt>S304\Bahnhofstrasse</cmt>
   <desc>S304\Bahnhofstrasse</desc>
 </wpt>
 <wpt lat="50.400420000" lon="12.337200000">
-  <name>bei D 08261 Sch&#xf6;neck </name>
+  <name>bei D 08261 Schöneck </name>
   <cmt>S301</cmt>
   <desc>S301</desc>
 </wpt>
@@ -203,7 +203,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
   <desc>B283</desc>
 </wpt>
 <wpt lat="50.271540000" lon="12.321940000">
-  <name>bei D 08258 Landw&#xfc;st </name>
+  <name>bei D 08258 Landwüst </name>
   <cmt>K7844\Rauner Strasse</cmt>
   <desc>K7844\Rauner Strasse</desc>
 </wpt>
@@ -223,7 +223,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
   <desc>K7854\Oelsnitzer Strasse</desc>
 </wpt>
 <wpt lat="50.404490000" lon="12.063910000">
-  <name>bei D 08538 Burgstein/Dr&#xf6;da </name>
+  <name>bei D 08538 Burgstein/Dröda </name>
   <cmt>S310\Bobenneukirchener Strasse</cmt>
   <desc>S310\Bobenneukirchener Strasse</desc>
 </wpt>
@@ -256,7 +256,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>B2</desc>
   </rtept>
   <rtept lat="50.393720000" lon="11.867560000">
-    <name>bei D 95183 T&#xf6;pen </name>
+    <name>bei D 95183 Töpen </name>
     <cmt>B2\Hofer Strasse</cmt>
     <desc>B2\Hofer Strasse</desc>
   </rtept>
@@ -289,19 +289,19 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <name>rechts abbiegen</name>
   </rtept>
   <rtept lat="50.475460000" lon="11.652270000">
-    <name>in Sch&#xf6;nbrunn links abbiegen auf Sch&#xf6;nbrunn</name>
-    <cmt>Sch&#xf6;nbrunn</cmt>
-    <desc>Sch&#xf6;nbrunn</desc>
+    <name>in Schönbrunn links abbiegen auf Schönbrunn</name>
+    <cmt>Schönbrunn</cmt>
+    <desc>Schönbrunn</desc>
   </rtept>
   <rtept lat="50.475750000" lon="11.652890000">
-    <name>links abbiegen auf Sch&#xf6;nbrunn</name>
-    <cmt>Sch&#xf6;nbrunn</cmt>
-    <desc>Sch&#xf6;nbrunn</desc>
+    <name>links abbiegen auf Schönbrunn</name>
+    <cmt>Schönbrunn</cmt>
+    <desc>Schönbrunn</desc>
   </rtept>
   <rtept lat="50.476670000" lon="11.652930000">
-    <name>halb rechts halten auf Sch&#xf6;nbrunn</name>
-    <cmt>Sch&#xf6;nbrunn</cmt>
-    <desc>Sch&#xf6;nbrunn</desc>
+    <name>halb rechts halten auf Schönbrunn</name>
+    <cmt>Schönbrunn</cmt>
+    <desc>Schönbrunn</desc>
   </rtept>
   <rtept lat="50.477110000" lon="11.653620000">
     <name>geradeaus weiter auf L1095 </name>
@@ -415,7 +415,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>L2357</desc>
   </rtept>
   <rtept lat="50.558740000" lon="11.736880000">
-    <name>bei D 07907 Schleiz/M&#xf6;schlitz </name>
+    <name>bei D 07907 Schleiz/Möschlitz </name>
     <cmt>L2357</cmt>
     <desc>L2357</desc>
   </rtept>
@@ -423,9 +423,9 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <name>links abbiegen</name>
   </rtept>
   <rtept lat="50.570230000" lon="11.729630000">
-    <name>in Grochwitz halb rechts halten auf M&#xfc;hlenstrasse</name>
-    <cmt>M&#xfc;hlenstrasse</cmt>
-    <desc>M&#xfc;hlenstrasse</desc>
+    <name>in Grochwitz halb rechts halten auf Mühlenstrasse</name>
+    <cmt>Mühlenstrasse</cmt>
+    <desc>Mühlenstrasse</desc>
   </rtept>
   <rtept lat="50.571140000" lon="11.730220000">
     <name>geradeaus weiter auf Sackgasse</name>
@@ -461,7 +461,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>L1103</desc>
   </rtept>
   <rtept lat="50.605660000" lon="11.651000000">
-    <name>in Ziegenr&#xfc;ck halb links halten auf Schleizer Strasse (L1103)</name>
+    <name>in Ziegenrück halb links halten auf Schleizer Strasse (L1103)</name>
     <cmt>Schleizer Strasse (L1103)</cmt>
     <desc>Schleizer Strasse (L1103)</desc>
   </rtept>
@@ -471,7 +471,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Plothental (L2350)</desc>
   </rtept>
   <rtept lat="50.608090000" lon="11.653350000">
-    <name>bei D 07924 Ziegenr&#xfc;ck </name>
+    <name>bei D 07924 Ziegenrück </name>
     <cmt>L2350\Plothental</cmt>
     <desc>L2350\Plothental</desc>
   </rtept>
@@ -526,25 +526,25 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>B2</desc>
   </rtept>
   <rtept lat="50.603620000" lon="11.823910000">
-    <name>in Oettersdorf links abbiegen auf L&#xf6;hmaer Weg  (K301)</name>
-    <cmt>L&#xf6;hmaer Weg  (K301)</cmt>
-    <desc>L&#xf6;hmaer Weg  (K301)</desc>
+    <name>in Oettersdorf links abbiegen auf Löhmaer Weg  (K301)</name>
+    <cmt>Löhmaer Weg  (K301)</cmt>
+    <desc>Löhmaer Weg  (K301)</desc>
   </rtept>
   <rtept lat="50.604720000" lon="11.825820000">
-    <name>rechts abbiegen auf L&#xf6;hmaer Weg  (K301)</name>
-    <cmt>L&#xf6;hmaer Weg  (K301)</cmt>
-    <desc>L&#xf6;hmaer Weg  (K301)</desc>
+    <name>rechts abbiegen auf Löhmaer Weg  (K301)</name>
+    <cmt>Löhmaer Weg  (K301)</cmt>
+    <desc>Löhmaer Weg  (K301)</desc>
   </rtept>
   <rtept lat="50.602840000" lon="11.828100000">
-    <name>links abbiegen auf L&#xf6;hmaer Weg (K301)</name>
-    <cmt>L&#xf6;hmaer Weg (K301)</cmt>
-    <desc>L&#xf6;hmaer Weg (K301)</desc>
+    <name>links abbiegen auf Löhmaer Weg (K301)</name>
+    <cmt>Löhmaer Weg (K301)</cmt>
+    <desc>Löhmaer Weg (K301)</desc>
   </rtept>
   <rtept lat="50.614300000" lon="11.849910000">
     <name>rechts abbiegen</name>
   </rtept>
   <rtept lat="50.611660000" lon="11.851660000">
-    <name>in L&#xf6;hma links abbiegen auf Ortsstrasse</name>
+    <name>in Löhma links abbiegen auf Ortsstrasse</name>
     <cmt>Ortsstrasse</cmt>
     <desc>Ortsstrasse</desc>
   </rtept>
@@ -592,12 +592,12 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Dorfstrasse</desc>
   </rtept>
   <rtept lat="50.587800000" lon="11.886210000">
-    <name>in L&#xf6;ssau links abbiegen</name>
+    <name>in Lössau links abbiegen</name>
   </rtept>
   <rtept lat="50.568210000" lon="11.907330000">
     <name>bei D 07907 Schleiz/Langenbuch </name>
-    <cmt>K304\L&#xf6;ssauer Strasse</cmt>
-    <desc>K304\L&#xf6;ssauer Strasse</desc>
+    <cmt>K304\Lössauer Strasse</cmt>
+    <desc>K304\Lössauer Strasse</desc>
   </rtept>
   <rtept lat="50.566910000" lon="11.907870000">
     <name>in Langenbuch links abbiegen auf Thierbacher Strasse (L2348)</name>
@@ -616,14 +616,14 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Plauensche Strasse (S316)</desc>
   </rtept>
   <rtept lat="50.576240000" lon="11.990570000">
-    <name>in Oberreichenau halb links halten auf Am M&#xfc;hlgraben (S316)</name>
-    <cmt>Am M&#xfc;hlgraben (S316)</cmt>
-    <desc>Am M&#xfc;hlgraben (S316)</desc>
+    <name>in Oberreichenau halb links halten auf Am Mühlgraben (S316)</name>
+    <cmt>Am Mühlgraben (S316)</cmt>
+    <desc>Am Mühlgraben (S316)</desc>
   </rtept>
   <rtept lat="50.575210000" lon="11.991270000">
     <name>bei D 07952 Pausa/Oberreichenau </name>
-    <cmt>S316\Am M&#xfc;hlgraben</cmt>
-    <desc>S316\Am M&#xfc;hlgraben</desc>
+    <cmt>S316\Am Mühlgraben</cmt>
+    <desc>S316\Am Mühlgraben</desc>
   </rtept>
   <rtept lat="50.542020000" lon="12.081040000">
     <name>in Syrau halb rechts halten auf B282/E49 Hauptstrasse</name>
@@ -651,7 +651,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Martin-Luther-Strasse</desc>
   </rtept>
   <rtept lat="50.504660000" lon="12.142140000">
-    <name>bei D 08525 Plauen/Prei&#xdf;elp&#xf6;hl </name>
+    <name>bei D 08525 Plauen/Preißelpöhl </name>
     <cmt>Martin-Luther-Strasse</cmt>
     <desc>Martin-Luther-Strasse</desc>
   </rtept>
@@ -666,9 +666,9 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>B173 Hammerstrasse</desc>
   </rtept>
   <rtept lat="50.497700000" lon="12.182310000">
-    <name>links abbiegen auf Voigtsgr&#xfc;ner Weg (K6605)</name>
-    <cmt>Voigtsgr&#xfc;ner Weg (K6605)</cmt>
-    <desc>Voigtsgr&#xfc;ner Weg (K6605)</desc>
+    <name>links abbiegen auf Voigtsgrüner Weg (K6605)</name>
+    <cmt>Voigtsgrüner Weg (K6605)</cmt>
+    <desc>Voigtsgrüner Weg (K6605)</desc>
   </rtept>
   <rtept lat="50.506420000" lon="12.194890000">
     <name>rechts abbiegen auf Zum Plom</name>
@@ -709,17 +709,17 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>B173 Hauptstrasse</desc>
   </rtept>
   <rtept lat="50.524530000" lon="12.244410000">
-    <name>links abbiegen auf Gansgr&#xfc;ner Strasse (K7880)</name>
-    <cmt>Gansgr&#xfc;ner Strasse (K7880)</cmt>
-    <desc>Gansgr&#xfc;ner Strasse (K7880)</desc>
+    <name>links abbiegen auf Gansgrüner Strasse (K7880)</name>
+    <cmt>Gansgrüner Strasse (K7880)</cmt>
+    <desc>Gansgrüner Strasse (K7880)</desc>
   </rtept>
   <rtept lat="50.524640000" lon="12.244230000">
-    <name>links abbiegen auf Gansgr&#xfc;ner Strasse (K7880)</name>
-    <cmt>Gansgr&#xfc;ner Strasse (K7880)</cmt>
-    <desc>Gansgr&#xfc;ner Strasse (K7880)</desc>
+    <name>links abbiegen auf Gansgrüner Strasse (K7880)</name>
+    <cmt>Gansgrüner Strasse (K7880)</cmt>
+    <desc>Gansgrüner Strasse (K7880)</desc>
   </rtept>
   <rtept lat="50.528170000" lon="12.221450000">
-    <name>in Gansgr&#xfc;n links abbiegen auf Dorfstrasse</name>
+    <name>in Gansgrün links abbiegen auf Dorfstrasse</name>
     <cmt>Dorfstrasse</cmt>
     <desc>Dorfstrasse</desc>
   </rtept>
@@ -737,37 +737,37 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <name>halb links halten</name>
   </rtept>
   <rtept lat="50.546070000" lon="12.218730000">
-    <name>bei D 08543 P&#xf6;hl/Helmsgr&#xfc;n </name>
-    <cmt>K7880\Helmsgr&#xfc;n-Dorfstrasse</cmt>
-    <desc>K7880\Helmsgr&#xfc;n-Dorfstrasse</desc>
+    <name>bei D 08543 Pöhl/Helmsgrün </name>
+    <cmt>K7880\Helmsgrün-Dorfstrasse</cmt>
+    <desc>K7880\Helmsgrün-Dorfstrasse</desc>
   </rtept>
   <rtept lat="50.548640000" lon="12.219230000">
-    <name>in Helmsgr&#xfc;n halb rechts halten</name>
+    <name>in Helmsgrün halb rechts halten</name>
   </rtept>
   <rtept lat="50.566180000" lon="12.225640000">
-    <name>in Herlasgr&#xfc;n rechts abbiegen auf Herlasgr&#xfc;n-Dorfstrasse (K7811)</name>
-    <cmt>Herlasgr&#xfc;n-Dorfstrasse (K7811)</cmt>
-    <desc>Herlasgr&#xfc;n-Dorfstrasse (K7811)</desc>
+    <name>in Herlasgrün rechts abbiegen auf Herlasgrün-Dorfstrasse (K7811)</name>
+    <cmt>Herlasgrün-Dorfstrasse (K7811)</cmt>
+    <desc>Herlasgrün-Dorfstrasse (K7811)</desc>
   </rtept>
   <rtept lat="50.566740000" lon="12.226250000">
-    <name>bei D 08543 Herlasgr&#xfc;n </name>
-    <cmt>K7811\Herlasgr&#xfc;n-Dorfstrasse</cmt>
-    <desc>K7811\Herlasgr&#xfc;n-Dorfstrasse</desc>
+    <name>bei D 08543 Herlasgrün </name>
+    <cmt>K7811\Herlasgrün-Dorfstrasse</cmt>
+    <desc>K7811\Herlasgrün-Dorfstrasse</desc>
   </rtept>
   <rtept lat="50.567370000" lon="12.227000000">
-    <name>links abbiegen auf Herlasgr&#xfc;n-Christgr&#xfc;ner Strasse</name>
-    <cmt>Herlasgr&#xfc;n-Christgr&#xfc;ner Strasse</cmt>
-    <desc>Herlasgr&#xfc;n-Christgr&#xfc;ner Strasse</desc>
+    <name>links abbiegen auf Herlasgrün-Christgrüner Strasse</name>
+    <cmt>Herlasgrün-Christgrüner Strasse</cmt>
+    <desc>Herlasgrün-Christgrüner Strasse</desc>
   </rtept>
   <rtept lat="50.569600000" lon="12.224910000">
-    <name>geradeaus weiter auf Christgr&#xfc;ner Strasse</name>
-    <cmt>Christgr&#xfc;ner Strasse</cmt>
-    <desc>Christgr&#xfc;ner Strasse</desc>
+    <name>geradeaus weiter auf Christgrüner Strasse</name>
+    <cmt>Christgrüner Strasse</cmt>
+    <desc>Christgrüner Strasse</desc>
   </rtept>
   <rtept lat="50.575660000" lon="12.221830000">
-    <name>rechts abbiegen auf Drecksch&#xe4;nke (S297)</name>
-    <cmt>Drecksch&#xe4;nke (S297)</cmt>
-    <desc>Drecksch&#xe4;nke (S297)</desc>
+    <name>rechts abbiegen auf Dreckschänke (S297)</name>
+    <cmt>Dreckschänke (S297)</cmt>
+    <desc>Dreckschänke (S297)</desc>
   </rtept>
   <rtept lat="50.578200000" lon="12.231830000">
     <name>links abbiegen auf S298</name>
@@ -775,13 +775,13 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>S298</desc>
   </rtept>
   <rtept lat="50.590870000" lon="12.216020000">
-    <name>in Reimersgr&#xfc;n links abbiegen</name>
+    <name>in Reimersgrün links abbiegen</name>
   </rtept>
   <rtept lat="50.598770000" lon="12.198880000">
     <name>halb rechts halten</name>
   </rtept>
   <rtept lat="50.605680000" lon="12.187530000">
-    <name>in Cosch&#xfc;tz rechts abbiegen auf Friedensstrasse (K7887)</name>
+    <name>in Coschütz rechts abbiegen auf Friedensstrasse (K7887)</name>
     <cmt>Friedensstrasse (K7887)</cmt>
     <desc>Friedensstrasse (K7887)</desc>
   </rtept>
@@ -841,9 +841,9 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>B173/B94 Klinkhardtstrasse</desc>
   </rtept>
   <rtept lat="50.624730000" lon="12.291980000">
-    <name>links abbiegen auf B173/B94 Dr.-K&#xfc;lz-Strasse</name>
-    <cmt>B173/B94 Dr.-K&#xfc;lz-Strasse</cmt>
-    <desc>B173/B94 Dr.-K&#xfc;lz-Strasse</desc>
+    <name>links abbiegen auf B173/B94 Dr.-Külz-Strasse</name>
+    <cmt>B173/B94 Dr.-Külz-Strasse</cmt>
+    <desc>B173/B94 Dr.-Külz-Strasse</desc>
   </rtept>
   <rtept lat="50.628460000" lon="12.285400000">
     <name>rechts abbiegen auf B173 Friedensstrasse</name>
@@ -871,7 +871,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>B173</desc>
   </rtept>
   <rtept lat="50.676760000" lon="12.408650000">
-    <name>in Sch&#xf6;nfels links abbiegen auf Stenner Strasse</name>
+    <name>in Schönfels links abbiegen auf Stenner Strasse</name>
     <cmt>Stenner Strasse</cmt>
     <desc>Stenner Strasse</desc>
   </rtept>
@@ -881,7 +881,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Zwickauer Strasse (K9351)</desc>
   </rtept>
   <rtept lat="50.676090000" lon="12.405090000">
-    <name>D 08115 Sch&#xf6;nfels </name>
+    <name>D 08115 Schönfels </name>
     <cmt>K9351\Zwickauer Strasse</cmt>
     <desc>K9351\Zwickauer Strasse</desc>
   </rtept>
@@ -916,9 +916,9 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>B173 Dr.-Friedrichs-Ring</desc>
   </rtept>
   <rtept lat="50.714820000" lon="12.499450000">
-    <name>geradeaus weiter auf B173 Gl&#xfc;ck-Auf-Br&#xfc;cke/&#xc4;ussere Dresdner Strasse</name>
-    <cmt>B173 Gl&#xfc;ck-Auf-Br&#xfc;cke/&#xc4;ussere Dresdner Strasse</cmt>
-    <desc>B173 Gl&#xfc;ck-Auf-Br&#xfc;cke/&#xc4;ussere Dresdner Strasse</desc>
+    <name>geradeaus weiter auf B173 Glück-Auf-Brücke/Äussere Dresdner Strasse</name>
+    <cmt>B173 Glück-Auf-Brücke/Äussere Dresdner Strasse</cmt>
+    <desc>B173 Glück-Auf-Brücke/Äussere Dresdner Strasse</desc>
   </rtept>
   <rtept lat="50.745140000" lon="12.596660000">
     <name>rechts abbiegen auf Dresdner Strasse</name>
@@ -926,9 +926,9 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Dresdner Strasse</desc>
   </rtept>
   <rtept lat="50.747100000" lon="12.606600000">
-    <name>geradeaus weiter auf &#xc4;ussere Zwickauer Strasse</name>
-    <cmt>&#xc4;ussere Zwickauer Strasse</cmt>
-    <desc>&#xc4;ussere Zwickauer Strasse</desc>
+    <name>geradeaus weiter auf Ã„ussere Zwickauer Strasse</name>
+    <cmt>Äussere Zwickauer Strasse</cmt>
+    <desc>Äussere Zwickauer Strasse</desc>
   </rtept>
   <rtept lat="50.754700000" lon="12.626850000">
     <name>in Lichtenstein/Sa. geradeaus weiter auf Innere Zwickauer Strasse</name>
@@ -1050,12 +1050,12 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>B169 Kobaltstrasse</desc>
   </rtept>
   <rtept lat="50.546590000" lon="12.576330000">
-    <name>in Hundsh&#xfc;bel halb rechts halten auf B169 Hauptstrasse</name>
+    <name>in Hundshübel halb rechts halten auf B169 Hauptstrasse</name>
     <cmt>B169 Hauptstrasse</cmt>
     <desc>B169 Hauptstrasse</desc>
   </rtept>
   <rtept lat="50.533910000" lon="12.527210000">
-    <name>in St&#xfc;tzengr&#xfc;n rechts abbiegen auf B169 Auerbacher Strasse</name>
+    <name>in Stützengrün rechts abbiegen auf B169 Auerbacher Strasse</name>
     <cmt>B169 Auerbacher Strasse</cmt>
     <desc>B169 Auerbacher Strasse</desc>
   </rtept>
@@ -1076,13 +1076,13 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
   </rtept>
   <rtept lat="50.508270000" lon="12.397900000">
     <name>bei D 08209 Auerbach </name>
-    <cmt>B169\G&#xf6;ltzschtalstrasse</cmt>
-    <desc>B169\G&#xf6;ltzschtalstrasse</desc>
+    <cmt>B169\Göltzschtalstrasse</cmt>
+    <desc>B169\Göltzschtalstrasse</desc>
   </rtept>
   <rtept lat="50.502860000" lon="12.397930000">
-    <name>in Auerbach/Vogtl. links abbiegen auf B169 G&#xf6;ltzschtalstrasse</name>
-    <cmt>B169 G&#xf6;ltzschtalstrasse</cmt>
-    <desc>B169 G&#xf6;ltzschtalstrasse</desc>
+    <name>in Auerbach/Vogtl. links abbiegen auf B169 Göltzschtalstrasse</name>
+    <cmt>B169 Göltzschtalstrasse</cmt>
+    <desc>B169 Göltzschtalstrasse</desc>
   </rtept>
   <rtept lat="50.489000000" lon="12.393790000">
     <name>in Ellefeld links abbiegen auf Neuberg</name>
@@ -1106,8 +1106,8 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
   </rtept>
   <rtept lat="50.479200000" lon="12.424870000">
     <name>bei D 08209 Auerbach/Beerheide </name>
-    <cmt>K7833\Rempesgr&#xfc;ner Strasse</cmt>
-    <desc>K7833\Rempesgr&#xfc;ner Strasse</desc>
+    <cmt>K7833\Rempesgrüner Strasse</cmt>
+    <desc>K7833\Rempesgrüner Strasse</desc>
   </rtept>
   <rtept lat="50.478470000" lon="12.425460000">
     <name>in Beerheide links abbiegen auf Strasse des Friedens (K7826)</name>
@@ -1115,7 +1115,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Strasse des Friedens (K7826)</desc>
   </rtept>
   <rtept lat="50.485670000" lon="12.433050000">
-    <name>in Hohengr&#xfc;n rechts abbiegen auf Klingenthaler Strasse (S300)</name>
+    <name>in Hohengrün rechts abbiegen auf Klingenthaler Strasse (S300)</name>
     <cmt>Klingenthaler Strasse (S300)</cmt>
     <desc>Klingenthaler Strasse (S300)</desc>
   </rtept>
@@ -1128,17 +1128,17 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Schallerbachstrasse (K7822)</desc>
   </rtept>
   <rtept lat="50.500210000" lon="12.435830000">
-    <name>in Brunn rechts abbiegen auf Sch&#xf6;nheider Strasse (S278)</name>
-    <cmt>Sch&#xf6;nheider Strasse (S278)</cmt>
-    <desc>Sch&#xf6;nheider Strasse (S278)</desc>
+    <name>in Brunn rechts abbiegen auf Schönheider Strasse (S278)</name>
+    <cmt>Schönheider Strasse (S278)</cmt>
+    <desc>Schönheider Strasse (S278)</desc>
   </rtept>
   <rtept lat="50.505090000" lon="12.522040000">
-    <name>in Sch&#xf6;nheide halb rechts halten auf Hauptstrasse (S278)</name>
+    <name>in Schönheide halb rechts halten auf Hauptstrasse (S278)</name>
     <cmt>Hauptstrasse (S278)</cmt>
     <desc>Hauptstrasse (S278)</desc>
   </rtept>
   <rtept lat="50.503030000" lon="12.533360000">
-    <name>D 08304 Sch&#xf6;nheide </name>
+    <name>D 08304 Schönheide </name>
     <cmt>S278\Hauptstrasse</cmt>
     <desc>S278\Hauptstrasse</desc>
   </rtept>
@@ -1163,14 +1163,14 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Am Filz</desc>
   </rtept>
   <rtept lat="50.462790000" lon="12.490730000">
-    <name>geradeaus weiter auf B283 Sch&#xf6;nheider Strasse</name>
-    <cmt>B283 Sch&#xf6;nheider Strasse</cmt>
-    <desc>B283 Sch&#xf6;nheider Strasse</desc>
+    <name>geradeaus weiter auf B283 Schönheider Strasse</name>
+    <cmt>B283 Schönheider Strasse</cmt>
+    <desc>B283 Schönheider Strasse</desc>
   </rtept>
   <rtept lat="50.458250000" lon="12.488440000">
-    <name>bei D 08262 Tannenbergsthal/J&#xe4;gersgr&#xfc;n </name>
-    <cmt>B283\Sch&#xf6;nheider Strasse</cmt>
-    <desc>B283\Sch&#xf6;nheider Strasse</desc>
+    <name>bei D 08262 Tannenbergsthal/Jägersgrün </name>
+    <cmt>B283\Schönheider Strasse</cmt>
+    <desc>B283\Schönheider Strasse</desc>
   </rtept>
   <rtept lat="50.434530000" lon="12.461120000">
     <name>bei D 08262 Tannenbergsthal </name>
@@ -1193,12 +1193,12 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Falkensteiner Strasse (S304)</desc>
   </rtept>
   <rtept lat="50.384530000" lon="12.456220000">
-    <name>bei D 08248 Klingenthal/Brunnd&#xf6;bra </name>
+    <name>bei D 08248 Klingenthal/Brunndöbra </name>
     <cmt>S304\Falkensteiner Strasse</cmt>
     <desc>S304\Falkensteiner Strasse</desc>
   </rtept>
   <rtept lat="50.419640000" lon="12.399730000">
-    <name>bei D 08223 Gr&#xfc;nbach-Muldenberg </name>
+    <name>bei D 08223 Grünbach-Muldenberg </name>
     <cmt>S302/S304</cmt>
     <desc>S302/S304</desc>
   </rtept>
@@ -1208,37 +1208,37 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>S304</desc>
   </rtept>
   <rtept lat="50.446180000" lon="12.364590000">
-    <name>bei D 08223 Gr&#xfc;nbach </name>
+    <name>bei D 08223 Grünbach </name>
     <cmt>S304\Bahnhofstrasse</cmt>
     <desc>S304\Bahnhofstrasse</desc>
   </rtept>
   <rtept lat="50.449330000" lon="12.362170000">
-    <name>in Gr&#xfc;nbach links abbiegen auf Neust&#xe4;dter Strasse (K7835)</name>
-    <cmt>Neust&#xe4;dter Strasse (K7835)</cmt>
-    <desc>Neust&#xe4;dter Strasse (K7835)</desc>
+    <name>in Grünbach links abbiegen auf Neustädter Strasse (K7835)</name>
+    <cmt>Neustädter Strasse (K7835)</cmt>
+    <desc>Neustädter Strasse (K7835)</desc>
   </rtept>
   <rtept lat="50.449520000" lon="12.361460000">
-    <name>links abbiegen auf Siehdichf&#xfc;rer Strasse (K7835)</name>
-    <cmt>Siehdichf&#xfc;rer Strasse (K7835)</cmt>
-    <desc>Siehdichf&#xfc;rer Strasse (K7835)</desc>
+    <name>links abbiegen auf Siehdichfürer Strasse (K7835)</name>
+    <cmt>Siehdichfürer Strasse (K7835)</cmt>
+    <desc>Siehdichfürer Strasse (K7835)</desc>
   </rtept>
   <rtept lat="50.442120000" lon="12.331960000">
-    <name>in Neudorf links abbiegen auf Sch&#xf6;necker Strasse (S301)</name>
-    <cmt>Sch&#xf6;necker Strasse (S301)</cmt>
-    <desc>Sch&#xf6;necker Strasse (S301)</desc>
+    <name>in Neudorf links abbiegen auf Schönecker Strasse (S301)</name>
+    <cmt>Schönecker Strasse (S301)</cmt>
+    <desc>Schönecker Strasse (S301)</desc>
   </rtept>
   <rtept lat="50.438410000" lon="12.333160000">
-    <name>links abbiegen auf Sch&#xf6;necker Strasse (S301)</name>
-    <cmt>Sch&#xf6;necker Strasse (S301)</cmt>
-    <desc>Sch&#xf6;necker Strasse (S301)</desc>
+    <name>links abbiegen auf Schönecker Strasse (S301)</name>
+    <cmt>Schönecker Strasse (S301)</cmt>
+    <desc>Schönecker Strasse (S301)</desc>
   </rtept>
   <rtept lat="50.400420000" lon="12.337200000">
-    <name>bei D 08261 Sch&#xf6;neck </name>
+    <name>bei D 08261 Schöneck </name>
     <cmt>S301</cmt>
     <desc>S301</desc>
   </rtept>
   <rtept lat="50.396910000" lon="12.337530000">
-    <name>in Sch&#xf6;neck/Vogtl. rechts abbiegen auf Falkensteiner Strasse (S301/S302)</name>
+    <name>in Schöneck/Vogtl. rechts abbiegen auf Falkensteiner Strasse (S301/S302)</name>
     <cmt>Falkensteiner Strasse (S301/S302)</cmt>
     <desc>Falkensteiner Strasse (S301/S302)</desc>
   </rtept>
@@ -1256,9 +1256,9 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <name>einfahren in Kreisverkehr </name>
   </rtept>
   <rtept lat="50.389490000" lon="12.349660000">
-    <name>2. M&#xf6;glichkeit aus Kreisverkehr ausfahren auf K&#xe4;rnerstrasse (S305)</name>
-    <cmt>K&#xe4;rnerstrasse (S305)</cmt>
-    <desc>K&#xe4;rnerstrasse (S305)</desc>
+    <name>2. Möglichkeit aus Kreisverkehr ausfahren auf Kärnerstrasse (S305)</name>
+    <cmt>Kärnerstrasse (S305)</cmt>
+    <desc>Kärnerstrasse (S305)</desc>
   </rtept>
   <rtept lat="50.343070000" lon="12.370580000">
     <name>rechts abbiegen auf B283</name>
@@ -1281,9 +1281,9 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Am Bahnhof </desc>
   </rtept>
   <rtept lat="50.307980000" lon="12.302170000">
-    <name>links abbiegen auf Str&#xe4;ssler Berg</name>
-    <cmt>Str&#xe4;ssler Berg</cmt>
-    <desc>Str&#xe4;ssler Berg</desc>
+    <name>links abbiegen auf Strässler Berg</name>
+    <cmt>Strässler Berg</cmt>
+    <desc>Strässler Berg</desc>
   </rtept>
   <rtept lat="50.304230000" lon="12.298880000">
     <name>geradeaus weiter auf Siebenbrunner Strasse</name>
@@ -1291,24 +1291,24 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Siebenbrunner Strasse</desc>
   </rtept>
   <rtept lat="50.298960000" lon="12.297280000">
-    <name>in Str&#xe4;ssel links abbiegen auf B&#xf6;hmische Strasse (K7846)</name>
-    <cmt>B&#xf6;hmische Strasse (K7846)</cmt>
-    <desc>B&#xf6;hmische Strasse (K7846)</desc>
+    <name>in Strässel links abbiegen auf Böhmische Strasse (K7846)</name>
+    <cmt>Böhmische Strasse (K7846)</cmt>
+    <desc>Böhmische Strasse (K7846)</desc>
   </rtept>
   <rtept lat="50.284250000" lon="12.313970000">
-    <name>in Sch&#xf6;nlind rechts abbiegen auf Markneukirchner Strasse (K7843)</name>
+    <name>in Schönlind rechts abbiegen auf Markneukirchner Strasse (K7843)</name>
     <cmt>Markneukirchner Strasse (K7843)</cmt>
     <desc>Markneukirchner Strasse (K7843)</desc>
   </rtept>
   <rtept lat="50.284020000" lon="12.314200000">
-    <name>links abbiegen auf Landw&#xfc;ster Strasse (K7846)</name>
-    <cmt>Landw&#xfc;ster Strasse (K7846)</cmt>
-    <desc>Landw&#xfc;ster Strasse (K7846)</desc>
+    <name>links abbiegen auf Landwüster Strasse (K7846)</name>
+    <cmt>Landwüster Strasse (K7846)</cmt>
+    <desc>Landwüster Strasse (K7846)</desc>
   </rtept>
   <rtept lat="50.271330000" lon="12.328640000">
-    <name>in Landw&#xfc;st halb rechts halten auf Sch&#xf6;nlinder Strasse (K7844)</name>
-    <cmt>Sch&#xf6;nlinder Strasse (K7844)</cmt>
-    <desc>Sch&#xf6;nlinder Strasse (K7844)</desc>
+    <name>in Landwüst halb rechts halten auf Schönlinder Strasse (K7844)</name>
+    <cmt>Schönlinder Strasse (K7844)</cmt>
+    <desc>Schönlinder Strasse (K7844)</desc>
   </rtept>
   <rtept lat="50.271090000" lon="12.328480000">
     <name>rechts abbiegen auf Rauner Strasse (K7844)</name>
@@ -1316,7 +1316,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Rauner Strasse (K7844)</desc>
   </rtept>
   <rtept lat="50.271540000" lon="12.321940000">
-    <name>bei D 08258 Landw&#xfc;st </name>
+    <name>bei D 08258 Landwüst </name>
     <cmt>K7844\Rauner Strasse</cmt>
     <desc>K7844\Rauner Strasse</desc>
   </rtept>
@@ -1403,7 +1403,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <name>links abbiegen</name>
   </rtept>
   <rtept lat="50.399460000" lon="12.095840000">
-    <name>in B&#xf6;senbrunn rechts abbiegen auf S310</name>
+    <name>in Bösenbrunn rechts abbiegen auf S310</name>
     <cmt>S310</cmt>
     <desc>S310</desc>
   </rtept>
@@ -1413,7 +1413,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>S310</desc>
   </rtept>
   <rtept lat="50.402190000" lon="12.064050000">
-    <name>in Dr&#xf6;da rechts abbiegen auf Hauptstrasse/Bobenneukirchener Strasse (S310)</name>
+    <name>in Dröda rechts abbiegen auf Hauptstrasse/Bobenneukirchener Strasse (S310)</name>
     <cmt>Hauptstrasse/Bobenneukirchener Strasse (S310)</cmt>
     <desc>Hauptstrasse/Bobenneukirchener Strasse (S310)</desc>
   </rtept>
@@ -1423,7 +1423,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>Bobenneukirchener Strasse (S310)</desc>
   </rtept>
   <rtept lat="50.404490000" lon="12.063910000">
-    <name>bei D 08538 Burgstein/Dr&#xf6;da </name>
+    <name>bei D 08538 Burgstein/Dröda </name>
     <cmt>S310\Bobenneukirchener Strasse</cmt>
     <desc>S310\Bobenneukirchener Strasse</desc>
   </rtept>
@@ -1433,9 +1433,9 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <desc>B173 Hofer Strasse</desc>
   </rtept>
   <rtept lat="50.427520000" lon="12.070870000">
-    <name>links abbiegen auf Zur Pirkm&#xfc;hle (K7859)</name>
-    <cmt>Zur Pirkm&#xfc;hle (K7859)</cmt>
-    <desc>Zur Pirkm&#xfc;hle (K7859)</desc>
+    <name>links abbiegen auf Zur Pirkmühle (K7859)</name>
+    <cmt>Zur Pirkmühle (K7859)</cmt>
+    <desc>Zur Pirkmühle (K7859)</desc>
   </rtept>
   <rtept lat="50.429200000" lon="12.061160000">
     <name>bei D 08538 Burgstein/Pirk </name>
@@ -1479,7 +1479,7 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/
     <name>links abbiegen</name>
   </rtept>
   <rtept lat="50.388740000" lon="11.996920000">
-    <name>in Heinersgr&#xfc;n halb links halten auf An der Kapelle (K7855)</name>
+    <name>in Heinersgrün halb links halten auf An der Kapelle (K7855)</name>
     <cmt>An der Kapelle (K7855)</cmt>
     <desc>An der Kapelle (K7855)</desc>
   </rtept>
index e1069f08d16d0ee623779afcb35e514616748650..90c5a09f235321b266d3de1217109bc3cb5b3e53 100644 (file)
@@ -204,3 +204,148 @@ route_flush_all()
        route_flush(&my_track_head);
 }
 
+void
+route_backup(unsigned int *count, queue **head_bak)
+{
+       queue *elem, *tmp, *elem2, *tmp2;
+       queue *qbackup;
+       route_head *rte_new;
+       unsigned int no;
+
+       no = route_count();
+       
+       qbackup = xcalloc(1, sizeof(*qbackup));
+       QUEUE_INIT(qbackup);
+       
+       QUEUE_MOVE(qbackup, &my_route_head);
+       QUEUE_INIT(&my_route_head);
+       
+       rte_head_ct = 0;
+       rte_waypts = 0;
+       
+       QUEUE_FOR_EACH(qbackup, elem, tmp)
+       {
+           route_head *rte_old = (route_head *)elem;
+           
+           rte_new = route_head_alloc();
+           if (rte_old->rte_name != NULL)
+               rte_new->rte_name = xstrdup(rte_old->rte_name);
+           if (rte_old->rte_desc != NULL)
+               rte_new->rte_desc = xstrdup(rte_old->rte_desc);
+           if (rte_old->fs)
+               rte_new->fs = fs_chain_copy(rte_old->fs);
+
+           route_add_head(rte_new);
+           rte_new->rte_num = rte_old->rte_num;
+           
+           QUEUE_FOR_EACH(&rte_old->waypoint_list, elem2, tmp2)
+           {
+               waypoint *wpt = waypt_dupe((waypoint *)elem2);
+               route_add_wpt(rte_new, wpt);
+           }
+       }
+       *head_bak = qbackup;
+       *count = no;
+}
+
+static void
+route_restore_hdr(const route_head *rte)
+{
+       rte_head_ct++;
+}
+
+static void
+track_restore_hdr(const route_head *trk)
+{
+       trk_head_ct++;
+}
+
+static void
+route_restore_tlr(const route_head *rte)
+{
+}
+
+static void
+route_restore_wpt(const waypoint *wpt)
+{
+       rte_waypts++;
+}
+
+void
+common_restore_finish(void)
+{
+       rte_head_ct = 0;
+       trk_head_ct = 0;
+       rte_waypts = 0;
+       route_disp_all(route_restore_hdr, route_restore_tlr, route_restore_wpt);
+       track_disp_all(track_restore_hdr, route_restore_tlr, route_restore_wpt);
+}
+
+void
+route_restore(unsigned int count, queue *head_bak)
+{
+       if (head_bak == NULL) return;
+       
+       route_flush(&my_route_head);
+       QUEUE_INIT(&my_route_head);
+       QUEUE_MOVE(&my_route_head, head_bak);
+       xfree(head_bak);
+       
+       common_restore_finish();
+}
+
+void
+track_backup(unsigned int *count, queue **head_bak)
+{
+       queue *elem, *tmp, *elem2, *tmp2;
+       queue *qbackup;
+       route_head *trk_new;
+       unsigned int no;
+       
+       no = track_count();
+       
+       qbackup = xcalloc(1, sizeof(*qbackup));
+       QUEUE_INIT(qbackup);
+       
+       QUEUE_MOVE(qbackup, &my_track_head);
+       QUEUE_INIT(&my_track_head);
+       
+       trk_head_ct = 0;
+       
+       QUEUE_FOR_EACH(qbackup, elem, tmp)
+       {
+           route_head *trk_old = (route_head *)elem;
+           
+           trk_new = route_head_alloc();
+           if (trk_old->rte_name != NULL)
+               trk_new->rte_name = xstrdup(trk_old->rte_name);
+           if (trk_old->rte_desc != NULL)
+               trk_new->rte_desc = xstrdup(trk_old->rte_desc);
+           if (trk_old->fs)
+               trk_new->fs = fs_chain_copy(trk_old->fs);
+
+           track_add_head(trk_new);
+           trk_new->rte_num = trk_old->rte_num;
+           
+           QUEUE_FOR_EACH(&trk_old->waypoint_list, elem2, tmp2)
+           {
+               waypoint *wpt = waypt_dupe((waypoint *)elem2);
+               route_add_wpt(trk_new, wpt);
+           }
+       }
+       *head_bak = qbackup;
+       *count = no;
+}
+
+void
+track_restore(unsigned int count, queue *head_bak)
+{
+       if (head_bak == NULL) return;
+       
+       route_flush(&my_track_head);
+       QUEUE_INIT(&my_track_head);
+       QUEUE_MOVE(&my_track_head, head_bak);
+       xfree(head_bak);
+       
+       common_restore_finish();
+}
index 11dc7f29a9487aadf15968a5bca58c158dc60ed2..2e4d0e0cdeeb7845a725c809ad6fefe46d5230cb 100644 (file)
@@ -278,5 +278,6 @@ ff_vecs_t saroute_vecs = {
        my_read,
        NULL,
        NULL, 
-       saroute_args
+       saroute_args,
+       CET_CHARSET_UTF8, 1     /* do nothing | CET-REVIEW */
 };
index cd51d232ee627957b98ddbf634a7d97da6ca64b0..4440374df189422623b45c23c5903d46b81cac82 100644 (file)
@@ -199,5 +199,6 @@ ff_vecs_t shape_vecs = {
        my_read,
        my_write,
        NULL,
-       NULL
+       NULL,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 85308dbb41d656c2b43df567abb081ef1802e755..77975d0e0b59fa7be0496ea21ae0e86d6dcd45a2 100644 (file)
@@ -304,5 +304,6 @@ ff_vecs_t tef_xml_vecs = {
        tef_xml_read,
        NULL,
        NULL, 
-       tef_xml_args
+       tef_xml_args,
+       CET_CHARSET_UTF8, 1
 };
index 19832b75f88c0e929e6ab013c07e3f1aa2310050..fe597473d0786a0ae90608dcc1cc9468bbd77acd 100755 (executable)
@@ -36,7 +36,13 @@ sort_and_compare()
        compare $TMPDIR/s1 $TMPDIR/s2
 }
 
-
+compare_gpx()
+{
+       sed -e '1d' $1 > $TMPDIR/comp_gpx1
+       sed -e '1d' $2 > $TMPDIR/comp_gpx2
+       compare $TMPDIR/comp_gpx1 $TMPDIR/comp_gpx2
+}
+       
 # Geocaching .loc
 rm -f ${TMPDIR}/gl.loc
 ${PNAME} -i geo -f geocaching.loc -o geo -F ${TMPDIR}/gl.loc
@@ -426,11 +432,11 @@ compare ${TMPDIR}/navi.wpt reference/navicache.ref
 #
 # CoastalExplorer..
 ${PNAME} -r -i coastexp -f reference/coastexp.nob -o gpx -F ${TMPDIR}/coastexp.gpx
-compare ${TMPDIR}/coastexp.gpx reference/coastexp.ref
+compare_gpx ${TMPDIR}/coastexp.gpx reference/coastexp.ref
 ${PNAME} -r -i gpx -f ${TMPDIR}/coastexp.gpx -o coastexp -F ${TMPDIR}/coastexp.nob
 compare ${TMPDIR}/coastexp.nob reference/coastexp.ref2
 ${PNAME} -w -i coastexp -f reference/coastexp.nob -o gpx -F ${TMPDIR}/coastexp.gpx
-compare ${TMPDIR}/coastexp.gpx reference/coastexp.ref3
+compare_gpx ${TMPDIR}/coastexp.gpx reference/coastexp.ref3
 ${PNAME} -w -i gpx -f ${TMPDIR}/coastexp.gpx -o coastexp -F ${TMPDIR}/coastexp.nob
 compare ${TMPDIR}/coastexp.nob reference/coastexp.ref4
 #
@@ -569,7 +575,7 @@ sed '/^LXXXGenerated by GPSBabel Version/d' ${TMPDIR}/igc.out > ${TMPDIR}/igc_se
 compare ${TMPDIR}/igc_sed.out reference/igc1_igc.out
 
 ${PNAME} -i igc -f ${TMPDIR}/igc.out -o gpx -F ${TMPDIR}/igc.gpx
-compare ${TMPDIR}/igc.gpx reference/igc1_gpx.out
+compare_gpx ${TMPDIR}/igc.gpx reference/igc1_gpx.out
 
 ${PNAME} -i gpx -f ${TMPDIR}/igc.gpx -o igc -F ${TMPDIR}/igc.out
 sed '/^LXXXGenerated by GPSBabel Version/d' ${TMPDIR}/igc.out > ${TMPDIR}/igc_sed.out
@@ -581,14 +587,14 @@ compare ${TMPDIR}/igc_sed.out reference/igc1_3d.out
 
 
 ${PNAME} -i igc -f reference/igc2.igc -o gpx -F ${TMPDIR}/igc.gpx
-compare ${TMPDIR}/igc.gpx reference/igc2_gpx.out
+compare_gpx ${TMPDIR}/igc.gpx reference/igc2_gpx.out
 
 ${PNAME} -i gpx -f ${TMPDIR}/igc.gpx -o igc -F ${TMPDIR}/igc.out
 sed '/^LXXXGenerated by GPSBabel Version/d' ${TMPDIR}/igc.out > ${TMPDIR}/igc_sed.out
 compare ${TMPDIR}/igc_sed.out reference/igc2_igc.out
 
 ${PNAME} -i igc -f ${TMPDIR}/igc.out -o gpx -F ${TMPDIR}/igc.gpx
-compare ${TMPDIR}/igc.gpx reference/igc2_gpx.out
+compare_gpx ${TMPDIR}/igc.gpx reference/igc2_gpx.out
 
 #
 # Google Maps XML test
@@ -701,7 +707,7 @@ ${PNAME} -i geo -f geocaching.loc -o text -F ${TMPDIR}/text.out -o html -F ${TMP
 #
 rm -f ${TMPDIR}/tef_xml*
 ${PNAME} -r -i tef -f reference/route/tef_xml.sample.xml -o gpx -F ${TMPDIR}/tef_xml.sample.gpx
-compare reference/route/tef_xml.sample.gpx ${TMPDIR}/tef_xml.sample.gpx
+compare ${TMPDIR}/tef_xml.sample.gpx reference/route/tef_xml.sample.gpx 
 
 #
 # PathAway Palm Database .pdb tests
@@ -712,7 +718,7 @@ ${PNAME} -i pathaway -f ${TMPDIR}/pathaway-geo.pdb -o geo -F ${TMPDIR}/pathaway-
 compare ${TMPDIR}/pathaway-geo.loc reference/pathaway-geo.loc
 rm -f ${TMPDIR}/pathaway*
 ${PNAME} -t -i pathaway -f reference/track/pathaway.pdb -o gpx -F ${TMPDIR}/pathaway.gpx
-compare ${TMPDIR}/pathaway.gpx reference/track/pathaway.gpx
+compare_gpx ${TMPDIR}/pathaway.gpx reference/track/pathaway.gpx
 
 #
 # Garmin GPS Database .gdb tests
@@ -726,15 +732,16 @@ ${PNAME} -w -r -t -i gdb -f ${TMPDIR}/gdb-sample.gdb -o gpx -F ${TMPDIR}/gdb-sam
 # Because of Garmin coordinates storage gpx is not good for this test
 # compare reference/gdb-sample.gpx ${TMPDIR}/gdb-sample.gpx
 #
+# compare ${TMPDIR}/gdb-sample.gpx reference/gdb-sample.gpx 
 
 #
 # Vito Navigator II .smt tests
 #
 rm -f ${TMPDIR}/vitosmt*
 ${PNAME}    -i vitosmt -f reference/vitosmt.smt -o gpx -F ${TMPDIR}/vitosmt.gpx
-compare ${TMPDIR}/vitosmt.gpx reference/vitosmt.gpx
+compare_gpx ${TMPDIR}/vitosmt.gpx reference/vitosmt.gpx
 ${PNAME} -t -i vitosmt -f reference/vitosmt.smt -o gpx -F ${TMPDIR}/vitosmt_t.gpx
-compare ${TMPDIR}/vitosmt_t.gpx reference/track/vitosmt_t.gpx
+compare_gpx ${TMPDIR}/vitosmt_t.gpx reference/track/vitosmt_t.gpx
 
 #
 # tracks filter tests
@@ -742,21 +749,34 @@ compare ${TMPDIR}/vitosmt_t.gpx reference/track/vitosmt_t.gpx
 
 rm -f ${TMPDIR}/trackfilter*
 
-${PNAME} -t -i gpx -f reference/track/trackfilter.gpx -x track,pack,split,title="LOG-%Y%m%d" -o gpx -F ${TMPDIR}/trackfilter-new.gpx
-grep -v "<time>" reference/track/trackfilter-new.gpx > ${TMPDIR}/trackfilter.ref
-grep -v "<time>" ${TMPDIR}/trackfilter-new.gpx > ${TMPDIR}/trackfilter.new
-compare ${TMPDIR}/trackfilter.ref ${TMPDIR}/trackfilter.new
+${PNAME} -t -i gpx -f reference/track/trackfilter.gpx -x track,pack,split,title="LOG-%Y%m%d" -o gpx -F ${TMPDIR}/trackfilter.gpx
+compare_gpx ${TMPDIR}/trackfilter.gpx reference/track/trackfilter.gpx
 
 #
 # Map&Guide Motorrad Routenplaner .bcr files test
 #
 rm -f ${TMPDIR}/bcr*
 ${PNAME} -r -i bcr -f reference/route/bcr-sample.bcr -o gpx -F ${TMPDIR}/bcr-sample.gpx
-compare reference/route/bcr-sample.gpx ${TMPDIR}/bcr-sample.gpx
+compare_gpx ${TMPDIR}/bcr-sample.gpx reference/route/bcr-sample.gpx 
 ${PNAME} -r -i gpx -f reference/route/bcr-sample.gpx -o bcr -F ${TMPDIR}/bcr-sample2.bcr
 compare reference/route/bcr-sample2.bcr ${TMPDIR}/bcr-sample2.bcr
 ${PNAME} -r -i bcr -f ${TMPDIR}/bcr-sample2.bcr -o gpx -F ${TMPDIR}/bcr-sample2.gpx
-compare reference/route/bcr-sample.gpx ${TMPDIR}/bcr-sample2.gpx
+compare_gpx reference/route/bcr-sample.gpx ${TMPDIR}/bcr-sample2.gpx
+
+#
+# cet - Character encoding transformation tests
+#
+rm -f ${TMPDIR}/cet-sample*
+${PNAME} -w -i gdb -f reference/cet/cet-sample.gdb -o gpx -F ${TMPDIR}/cet-sample.gpx
+compare ${TMPDIR}/cet-sample.gpx reference/cet/cet-sample.gpx
+${PNAME} -w -i gpx -f ${TMPDIR}/cet-sample.gpx -o tmpro -c Latin1 -F ${TMPDIR}/cet-sample.latin1.txt
+compare ${TMPDIR}/cet-sample.latin1.txt reference/cet/cet-sample.latin1.txt
+${PNAME} -w -i gdb -f reference/cet/cet-sample.gdb -o tmpro -c Latin2 -F ${TMPDIR}/cet-sample.latin2.txt
+compare ${TMPDIR}/cet-sample.latin2.txt reference/cet/cet-sample.latin2.txt
+${PNAME} -w -i gdb -f reference/cet/cet-sample.gdb -o tmpro -c cp1250 -F ${TMPDIR}/cet-sample.cp1250.txt
+compare ${TMPDIR}/cet-sample.cp1250.txt reference/cet/cet-sample.cp1250.txt
+${PNAME} -w -i gdb -f reference/cet/cet-sample.gdb -o tmpro -c macroman -F ${TMPDIR}/cet-sample.macroman.txt
+compare ${TMPDIR}/cet-sample.macroman.txt reference/cet/cet-sample.macroman.txt
 
 #
 # Garmin logbook.   This format has an extra section (lap data with things
index 2b96568d55ec097bbb334c3807abe38323d9d419..192f3506585a9094648fcd3ac1a85eee6606a1cd 100644 (file)
@@ -234,5 +234,7 @@ ff_vecs_t text_vecs = {
        NULL,
        data_write,
        NULL, 
-       text_args
+       text_args,
+       CET_CHARSET_ASCII, 1    /* CET-REVIEW */
+
 };
index b00699f0dd51284ddc7f3e8c0efb853d7f62f864..a2c398399f2424692f29ed969ad294bf2a874c40 100644 (file)
@@ -173,13 +173,16 @@ tiger_disp(const waypoint *wpt)
 
        fprintf(file_out, "%f,%f:%s", lon, lat, pin);
        if (!nolabels) {
+               char *temp = NULL;
                char *desc = csv_stringclean(wpt->description, ":");
-               char *adesc = str_utf8_to_ascii(desc);
                if (global_opts.synthesize_shortnames)
-                       adesc = mkshort(mkshort_whandle, adesc);
-               fprintf(file_out, ":%s", adesc);
+               {
+                       temp = desc;
+                       desc = mkshort(mkshort_whandle, desc);
+               }
+               fprintf(file_out, ":%s", desc);
+               if (temp != NULL) desc = temp;
                xfree(desc);
-               xfree(adesc);
        }
        fprintf(file_out, "\n");
 }
@@ -286,4 +289,5 @@ ff_vecs_t tiger_vecs = {
        data_write,
        NULL, 
        tiger_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 5938fe4ed59aa49823fdc4c6a170e0bf896f0c10..0bedd42457ff245e624e6abf5d8dc6bfad1e2b98 100644 (file)
@@ -255,6 +255,8 @@ ff_vecs_t tmpro_vecs = {
     wr_deinit,
     data_read,
     data_write,
-    NULL
+    NULL,
+    NULL,
+    CET_CHARSET_ASCII, 0       /* CET-REVIEW */
 };
 
index 5fd2022d327eff73dbffd6f050a29ffbaaac846a..c81295676a1b59b8f34e5d72be3d1bec6c0ad1f4 100644 (file)
@@ -348,4 +348,5 @@ ff_vecs_t tomtom_vecs = {
        data_write,
        NULL,
        tomtom_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index b0ecaba802eb72a1d161b5efdc88b4607e990876..81b80daf0181de865e3292836aa16cca17193705 100644 (file)
@@ -364,5 +364,7 @@ ff_vecs_t tpg_vecs = {
        tpg_wr_deinit,
        tpg_read,
        tpg_write,
-       NULL
+       NULL,
+       NULL,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index 654eeefbc6dd6c0c5b7e37f8befa7233cb9abb8e..03bffb33101b6be232a7e530cea3c0b55733ab5b 100644 (file)
@@ -749,251 +749,6 @@ rot13( const char *s )
        return result;
 }
 
-void utf8_to_int( const char *cp, int *bytes, int *value ) 
-{
-       if ( (*cp & 0xe0) == 0xc0 ) {
-               if ( (*(cp+1) & 0xc0) != 0x80 ) goto dodefault;
-               *bytes = 2;
-               *value = ((*cp & 0x1f) << 6) | 
-                       (*(cp+1) & 0x3f); 
-       }
-       else if ( (*cp & 0xf0) == 0xe0 ) {
-               if ( (*(cp+1) & 0xc0) != 0x80 ) goto dodefault;
-               if ( (*(cp+2) & 0xc0) != 0x80 ) goto dodefault;
-               *bytes = 3;
-               *value = ((*cp & 0x0f) << 12) | 
-                       ((*(cp+1) & 0x3f) << 6) | 
-                       (*(cp+2) & 0x3f); 
-       }
-       else if ( (*cp & 0xf8) == 0xf0 ) {
-               if ( (*(cp+1) & 0xc0) != 0x80 ) goto dodefault;
-               if ( (*(cp+2) & 0xc0) != 0x80 ) goto dodefault;
-               if ( (*(cp+3) & 0xc0) != 0x80 ) goto dodefault;
-               *bytes = 4;
-               *value = ((*cp & 0x07) << 18) | 
-                       ((*(cp+1) & 0x3f) << 12) | 
-                       ((*(cp+2) & 0x3f) << 6) | 
-                       (*(cp+3) & 0x3f); 
-       }
-       else if ( (*cp & 0xfc) == 0xf8 ) {
-               if ( (*(cp+1) & 0xc0) != 0x80 ) goto dodefault;
-               if ( (*(cp+2) & 0xc0) != 0x80 ) goto dodefault;
-               if ( (*(cp+3) & 0xc0) != 0x80 ) goto dodefault;
-               if ( (*(cp+4) & 0xc0) != 0x80 ) goto dodefault;
-               *bytes = 5;
-               *value = ((*cp & 0x03) << 24) | 
-                       ((*(cp+1) & 0x3f) << 18) | 
-                       ((*(cp+2) & 0x3f) << 12) | 
-                       ((*(cp+3) & 0x3f) << 6) |
-                       (*(cp+4) & 0x3f); 
-       }
-       else if ( (*cp & 0xfe) == 0xfc ) {
-               if ( (*(cp+1) & 0xc0) != 0x80 ) goto dodefault;
-               if ( (*(cp+2) & 0xc0) != 0x80 ) goto dodefault;
-               if ( (*(cp+3) & 0xc0) != 0x80 ) goto dodefault;
-               if ( (*(cp+4) & 0xc0) != 0x80 ) goto dodefault;
-               if ( (*(cp+5) & 0xc0) != 0x80 ) goto dodefault;
-               *bytes = 6;
-               *value = ((*cp & 0x01) << 30) | 
-                       ((*(cp+1) & 0x3f) << 24) | 
-                       ((*(cp+2) & 0x3f) << 18) | 
-                       ((*(cp+3) & 0x3f) << 12) |
-                       ((*(cp+4) & 0x3f) << 6) |
-                       (*(cp+5) & 0x3f); 
-       }
-       else {
-dodefault:
-               *bytes = 1;
-               *value = (unsigned char)*cp;
-       }
-}
-
-char * str_utf8_to_cp1252( const char * str )
-{
-       char *result = xstrdup( str );
-       char *cur = result;
-       
-       while ( cur && *cur ) {
-               if ( *cur & 0x80 ) {
-                       int bytes;
-                       int value;
-                       utf8_to_int( cur, &bytes, &value );
-                       if ( value > 0xff ) {
-                               switch (value) {
-                                       case 0x20AC: value = 0x80; break;
-                                       case 0x201A: value = 0x82; break;
-                                       case 0x0192: value = 0x83; break;
-                                       case 0x201E: value = 0x84; break;
-                                       case 0x2026: value = 0x85; break;
-                                       case 0x2020: value = 0x86; break;
-                                       case 0x2021: value = 0x87; break;
-                                       case 0x02C6: value = 0x88; break;
-                                       case 0x2030: value = 0x89; break;
-                                       case 0x0160: value = 0x8A; break;
-                                       case 0x2039: value = 0x8B; break;
-                                       case 0x0152: value = 0x8C; break;
-                                       case 0x017D: value = 0x8E; break;
-                                       case 0x2018: value = 0x91; break;
-                                       case 0x2019: value = 0x92; break;
-                                       case 0x201C: value = 0x93; break;
-                                       case 0x201D: value = 0x94; break;
-                                       case 0x2022: value = 0x95; break;
-                                       case 0x2013: value = 0x96; break;
-                                       case 0x2014: value = 0x97; break;
-                                       case 0x02DC: value = 0x98; break;
-                                       case 0x2122: value = 0x99; break;
-                                       case 0x0161: value = 0x9A; break;
-                                       case 0x203A: value = 0x9B; break;
-                                       case 0x0153: value = 0x9C; break;
-                                       case 0x017E: value = 0x9E; break;
-                                       case 0x0178: value = 0x9F; break;
-                                       /* default is the generic "currency  */
-                                       /* sign" because question marks  */
-                                       /* just look stupid. */
-                                       default: value = 0xA4; break;
-                               }
-                       }
-                       *cur = (char)value;
-                       memmove(cur+1, cur+bytes, strlen(cur+bytes) + 1);
-               }
-               cur++;
-       }
-       return result;
-}
-
-#if 0
-/*
- * Convert to ISO 8859-1 (LATIN-1). The result is never longer than 
- * the source.  
- */
-char * 
-str_utf8_to_8859_1( const char * str )
-{
-       char *result = xstrdup( str );
-       char *cur = result;
-       unsigned char c;
-
-       while (c = *str++) {
-               if (c < 0x80) {
-                       *cur++ = c;
-                       continue;
-               } 
-               if ((c & 0xFE) == 0xC2) {
-                       *cur++ = ((c & 0x03) << 6) | (*str++ & 0x3f);
-               }
-       }
-
-       return result;
-}
-#endif
-
-char * str_utf8_to_ascii( const char * str )
-{
-       char *result;
-       char *cur;
-
-       if (!str) return NULL;
-
-       result = xstrdup( str );
-       cur = result;
-       
-       while ( cur && *cur ) {
-               if ( *cur & 0x80 ) {
-                       int bytes;
-                       int value;
-                       char *strvalue = NULL;
-                       utf8_to_int( cur, &bytes, &value );
-                       switch (value) {
-                               case 0x2026: strvalue = "..."; break;
-                               case 0x201c: value = '\"'; break;
-                               case 0x201d: value = '\"'; break;
-                               case 0xb4:
-                               case 0x2018: value = '`'; break;
-                               case 0x2019: value = '\''; break;
-                                           
-                               case 0xf2: 
-                               case 0xf3: 
-                               case 0xf4: 
-                               case 0xf5: 
-                               case 0xf6: value = 'o'; break;
-
-                               case 0xe0:
-                               case 0xe1:
-                               case 0xe2:
-                               case 0xe3:
-                               case 0xe4:
-                               case 0xe5: value = 'a'; break;
-
-                               case 0xe8:
-                               case 0xe9:
-                               case 0xea:
-                               case 0xeb: value = 'e'; break;
-
-                               case 0xc0:
-                               case 0xc1:
-                               case 0xc2:
-                               case 0xc3:
-                               case 0xc4:
-                               case 0xc5: value = 'A'; break;
-
-                               case 0xf8: value = '0'; break;
-                               default: value='?'; break;;
-                       }
-                       if (strvalue) {
-                               memcpy(cur, strvalue, bytes);
-                               cur += bytes - 1;
-                       } else {
-                               *cur = (char)value;
-                               memmove(cur+1, cur+bytes, strlen(cur+bytes));
-                       }
-               }
-               cur++;
-       }
-       return result;
-}
-
-/*
- * str_iso8859_1_to_utf8
- *
- * converts the single byte charset ISO8859-1 (latin1) to UTF-8
- */
-
-char *
-str_iso8859_1_to_utf8(const char *s)
-{
-       int len;
-       char *res;
-       unsigned char c;
-       char *src, *dst;
-
-       if (s == NULL) return NULL;
-
-       len = 0;
-       src = (char *)s;
-       while ('\0' != (c = *src++))
-       {
-           len++;
-           if (c & 0x80) len++;
-       }
-
-       src = (char *)s;
-       dst = res = (void *) xmalloc(len + 1);
-       while ('\0' != (c = *src++))
-       {
-           if (c & 0x80)
-           {
-               *dst++ = (0xc0 | (c >> 6));
-               *dst++ = (c & 0xbf);
-           }
-           else
-           {
-               *dst++ = c;
-           }
-       }
-       *dst = '\0';
-       return res;
-}
-
 /* 
  * Get rid of potentially nasty HTML that would influence another record
  * that includes;
@@ -1167,15 +922,17 @@ entitize(const char * str, int is_html)
        
        /* figure the same for other than standard entities (i.e. anything
         * that isn't in the range U+0000 to U+007F */
+       
+#if 0
        for ( cp = str; *cp; cp++ ) {
                if ( *cp & 0x80 ) {
-                       
-                       utf8_to_int( cp, &bytes, &value );
+                       cet_utf8_to_ucs4( cp, &bytes, &value );
                        cp += bytes-1;
                        elen += sprintf( tmpsub, "&#x%x;", value ) - bytes;
                        nsecount++;     
                }
        }
+#endif
 
        /* enough space for the whole string plus entity replacements, if any */
        tmp = xcalloc((strlen(str) + elen + 1), 1);
@@ -1210,7 +967,7 @@ entitize(const char * str, int is_html)
                p = tmp;
                while (*p) {
                        if ( *p & 0x80 ) {
-                               utf8_to_int( p, &bytes, &value );
+                               cet_utf8_to_ucs4( p, &bytes, &value );
                                if ( p[bytes] ) {
                                        xstr = xstrdup( p + bytes );
                                }
index aa6911accc66370c7a09592bf781f2a8b60f01cd..00ad9d5258c707ba257f3cfbb29af5626787a459 100644 (file)
@@ -136,5 +136,6 @@ ff_vecs_t vcf_vecs = {
        NULL,
        data_write,
        NULL, 
-       vcf_args
+       vcf_args,
+       CET_CHARSET_ASCII, 0    /* CET-REVIEW */
 };
index f7e1ad5550416ee176997b2dd4682b64fba6ec14..18fe4c2a6e315956999e81ebc6cddf6aecd1f3d5 100644 (file)
@@ -409,5 +409,6 @@ ff_vecs_t vitosmt_vecs = {
        vitosmt_read,
        vitosmt_write,
        NULL, 
-       NULL
+       NULL,
+       CET_CHARSET_UTF8, 1     /* do nothing | CET-REVIEW */
 };
index f86958e3ada72f50049093981176c2d315af178d..e1daa6d7c422c11f33edd5e3a8a20ee0afb68d8d 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <stdio.h>
 #include "defs.h"
+#include "cet_util.h"
 
 queue waypt_head;
 static unsigned int waypt_ct;
@@ -165,7 +166,7 @@ waypt_disp(const waypoint *wpt)
        printposn(wpt->longitude,0);
 
        if ( wpt->description ) {       
-               tmpdesc = str_utf8_to_ascii( wpt->description);
+               tmpdesc = xstrdup( wpt->description);
                printf("%s/%s", 
                        global_opts.synthesize_shortnames ? 
                        mkshort(mkshort_handle, tmpdesc) : 
@@ -313,3 +314,40 @@ waypt_flush_all()
        }
        waypt_flush(&waypt_head);
 }
+
+void
+waypt_backup(unsigned int *count, queue **head_bak)
+{
+       queue *elem, *tmp, *qbackup;
+       waypoint *wpt;
+       int no;
+
+       qbackup = (queue *) xcalloc(1, sizeof(*qbackup));
+       QUEUE_INIT(qbackup);
+       
+       QUEUE_MOVE(qbackup, &waypt_head);
+       QUEUE_INIT(&waypt_head);
+
+       waypt_ct = 0;
+
+       QUEUE_FOR_EACH(qbackup, elem, tmp)
+       {
+           wpt = (waypoint *)elem;
+           waypt_add(waypt_dupe(wpt));
+       }
+
+       *head_bak = qbackup;
+       *count = no;
+}
+
+void
+waypt_restore(unsigned int count, queue *head_bak)
+{
+       if (head_bak == NULL) return;
+       
+       waypt_flush(&waypt_head);
+       QUEUE_INIT(&waypt_head);
+       QUEUE_MOVE(&waypt_head, head_bak);
+       waypt_ct = count;
+       xfree(head_bak);
+}
index 48acccd899eb278de8acc8b5cc65407d384dadaa..9cfd185d7287548f7eea41c8aff84da342a66c7a 100644 (file)
@@ -571,5 +571,6 @@ ff_vecs_t xcsv_vecs = {
     xcsv_data_read,
     xcsv_data_write,
     NULL, 
-    xcsv_args
+    xcsv_args,
+    CET_CHARSET_ASCII, 0       /* CET-REVIEW */
 };
index f9877da1f0968b44796c231ca9c6d52d3bc6c7cf..d48fc1c7a28a96ab9279de3c2190df547a2e6942 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "defs.h"
 #include "xmlgeneric.h"
+#include "cet_util.h"
 
 #ifndef NO_EXPAT
        #include <expat.h>
@@ -39,7 +40,14 @@ static xg_tag_mapping *xg_tag_tbl;
 void
 write_xml_header(FILE *ofd)
 {
-       fprintf(ofd, "<?xml version=\"1.0\"?>\n");
+       char buff[128];
+       cet_cs_vec_t *cs = cet_find_cs_by_name(CET_CHARSET_ASCII);
+
+       if ((global_opts.charset != NULL) && (global_opts.charset != cs))
+           snprintf(buff, sizeof(buff), " encoding=\"%s\"", global_opts.charset_name);
+       else
+           buff[0] = 0;
+       fprintf(ofd, "<?xml version=\"1.0\"%s?>\n", buff);
 }
 
 void
@@ -250,6 +258,7 @@ xml_init(const char *fname, xg_tag_mapping *tbl, const char *encoding)
 
        xg_tag_tbl = tbl;
 
+       XML_SetUnknownEncodingHandler(psr, cet_lib_expat_UnknownEncodingHandler, NULL);
        XML_SetElementHandler(psr, xml_start, xml_end);
        XML_SetCharacterDataHandler(psr, xml_cdata);
 }